这一章介绍了平时可能不太会用到的C++特性,内容比较杂。其中有类似枚举,联合,局部类这样之前就用过的特性,也有类成员指针,局部类这样新了解的特性。其中个人觉得19.1对new和delete的讨论很重要,19.2的RTTI介绍也扩展了我们编码的自由度,最后19.8的位域让我们可以更方便地进行位运算。
终于到了最后一章,七百余页的漫长阅读和几万字的笔记都即将迎来结束,回顾一下真挺感慨的,我应该早些看这本书才对,真的教了我很多很多。下一篇是第四部分的总结,标准库部分太杂了就暂时不总结了,然后可能还有篇全书"小结"部分的总结,就到头了。
19.1 控制内存分配
19.2 运行时类型识别
class Base {
virtual bool Base::equal(const Base& r) const {
// 比较基类成员
}
friend bool operator==(const Base& l, const Base& r) {
// 先判断是否是同类型,同类型下再进行比较
return (typeid(l) == typeid(r)) && l.equal(r);
}
};
class Derived :public Base {
bool Derived::equal(const Base& r) const {
// 由于已经判断为同类型,所以可以大胆进行类型转换
auto rr = dynamic_cast<const Derived&>(r);
// 转换后就可以比较派生类成员了
}
};
19.3 枚举类型
19.4 类成员指针
19.5 嵌套类
19.7 局部类
19.8 固有的不可移植的特性