什么是RTTI
RTTI(Run Time Type Identify)运行时类型检查。就是在运行时知道对象的类型。
实现RTTI的方式
(1)typeid函数
typeid(obj).name()返回对象的类型名称。
(2)dynamic_cast操作符
dynamic_cast可以知道是否可以安全地将对象的地址赋给特定类型的指针。如果转换失败,返回空指针(nullptr)。
注意:
RTTI只适用于包含虚函数的类。
RTTI实现原理就是根据对象所指向的虚函数表知道对象的类型。
在包含虚函数...
分类:
编程语言 时间:
2015-03-30 09:40:15
阅读次数:
161
1.是什么?
友元机制允许一个类将对其非公有成员的访问权授予制定的函数或类。 ——《c++ primer》
2.为什么要提出?:
类中一些成员函数使用较为频繁,需要大量时间开销,为了减少时间开销,就允许破坏程序的封装性,使用一个外部函数或类可以访问该类中的私有成员。所以友元的作用在于提高程序的运行效率(即减少了类型检查和安全性检查等都需要的时间开销)。3.友元的问题:
友元的使用破坏了类的...
分类:
编程语言 时间:
2015-03-28 21:53:42
阅读次数:
195
bool类型
bool a=true;
装箱&拆箱
装箱:将值类型隐式转换为引用类型
首先分配一个对象实例,然后将值类型的值复制到该实例中
int i=10;
object obj=i;//将int型的变量i隐式的转换成引用类型,并将其值赋给object类型的变量obj
拆箱:将引用类型隐式的转换成值类型
检查该对象实例是否为给定值类型的一个装了箱的值,将值从实例中复制出来
in...
我们在写C++代码的时候经常碰到使用dynamic_cast进行类型转换的情况,也都知道经过dynamic_cast的转换更加安全,因为dynamic_cast进行了类型检查。 但是可能很多人不知道dynamic_cast是C++ 运行时类型信息(RTTI)机制链条上的一个节点。 RTTI提供了两个操作符和一个类:
dynamic_cast
typeid
type_info
整个RTTI, 作为一...
分类:
其他好文 时间:
2015-03-19 22:13:26
阅读次数:
193
我们在写C++代码的时候经常碰到使用dynamic_cast进行类型转换的情况,也都知道经过dynamic_cast的转换更加安全,因为dynamic_cast进行了类型检查。 但是可能很多人不知道dynamic_cast是C++ 运行时类型信息(RTTI)机制链条上的一个节点。 RTTI提供了两个操作符和一个类:
dynamic_cast
typeid
type_info
整个RTTI, 作为一...
分类:
其他好文 时间:
2015-03-19 22:11:02
阅读次数:
214
(1) 编译器处理方式不同
define宏是在预处理阶段展开。
const常量是编译运行阶段使用。
(2) 类型和安全检查不同
define宏没有类型,不做任何类型检查,仅仅是展开。
const常量有具体的类型,在编译阶段会执行类型检查。
(3) 存储方式不同
define宏仅仅是展开,有多少地方使用,就展开多少次,不会分配内存。
...
分类:
其他好文 时间:
2015-03-16 13:02:44
阅读次数:
170
高级字符驱动程序操作之ioctlioctl: 用户空间原型:int
ioctl(intfd,unsignedlongcmd,…); “...”并非可变参数,而是可选参数,防止编译器进行类型检查。 驱动原型:int
(*ioctl)(structinode*inode,structfile*filp,unsignedintcmd,
unsignedlongarg); inode和flip是原来的f..
分类:
其他好文 时间:
2015-03-16 06:29:53
阅读次数:
276
在 golang 中, 变量是通过编译器声明和使用的,并且编译器会进行相应的类型检查package mainimport ( "fmt")func main() { var a string = "initial" fmt.Println(a) var b, c int = ...
分类:
其他好文 时间:
2015-03-11 14:41:05
阅读次数:
135
本文内容 Dynamically Typed Language(动态类型语言) Statically Typed Language(静态类型语言) 比较 参考资料 类型检查所进行的检验处理以及实行类型的约束,可发生在编译时期(静态检查)或运行时期(动态检查)。静态类型检查是在编译器所进行语义分析中进...
分类:
编程语言 时间:
2015-02-11 14:07:03
阅读次数:
301
最近突然想起对oc的对象模型比较清楚,那么c++、java怎样实现的呢?
参考文献:
http://www.cnblogs.com/skynet/p/3343726.html 吴秦(Tyler)c++对象模型
1. 先来易理解的,泛型的实现?
c++的泛型,采用编译期处理,添加对应的函数名+参数名,运行期直接调用;
java 泛型,是伪泛型,采用编译器类型检查等,实际加载cl...
分类:
编程语言 时间:
2015-02-05 13:38:44
阅读次数:
226