第十九章 特殊工具与技术
1. 使用new时,本质上执行了三步操作。第一步是调用了operator new或operator new[]标准库函数分配内存。这部分可以自己定义。
2.malloc和free函数。注意和new与delete的区别。
3.dynamic_cast运算符。将基类指针或引用安全转换为派生类的指针引用。可以不包含虚函数。
4.typeid运算符。
5.使用RTTI:如何去判断连个对象相等(类型相同,成员取值相同)。解决方法:typeid先判断两个运算对象类型是否一致,然后再调用equal函数(虚函数)。
6.枚举属于字面值常量类型。限定作用的美剧类型和不限定作用的。枚举值不一定唯一。
7.不限定作用域的枚举类型的枚举成员会被隐式地转换为int。
8.类成员指针。声明成员指针最方便的做法:auto pdata = &Screen::contents;
9.成员指针指定了成员而非该成员所属的对象,当解引用成员指针时我们才提供对象的信息。
10.函数调用运算符的优先级高于指针指向成员运算符。
11.成员指针不是一个可调用对象。可以使用function生成一个可调用对象,或者使用mem_fn或者bind。
12.嵌套类可以直接使用外层类的成员。可以理解为嵌套类时外层类的一个成员。
13.默认下,union成员时public,任意时刻只有一个成员可以有值。无法继承也无法作为基类。
14.遇到volatile关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问.
15.链接指示:extern "CC遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问.。
16.链接指示:extern "C"。