记得几年前还在广州的时候有读过这本书,但比较粗略,并没有融会贯通,可能是之前C++基础较为薄弱。搬家后这本书没有落掉,因此近段时间晚上1小时的读书时间看起了这个。
第一章主要讲C++ 对象模型,主要分析C++对象模型的结构,当中还跟C语言做了一些对比,例如分析了为什么C++要引入CLASS,原因其实比较简单,就是struct不适合C++ oo的思想,并且扩展到模板使用中显得过于突兀。重头戏是讨论了C++其实并没有传说中比C++效率低很多,并且C++虽然加了虚函数的机制增加了空间的成本,但是却赢来了更好的扩展性。主要看使用者如何拿捏了
第二章是讲解构造函数的,先重点介绍了什么情况下编译器会生成默认构造函数,情况有4。1是包含有构造函数的类成员,2是父类有默认构造函数三是虚基类有默认构造函数 四是存在虚函数 初始化虚表用的。接着讲解拷贝构造函数,跟默认构造函数同理,不是平白无故编译器就会自动生成的,也是需要在特定的情况下编译器才会生成!
第三章 数据语意学,一个空的类在普通的C++编译器一般占用一个char 的空间,这么做的原因是用于标识类。类空间大小还跟 语言本身支持的语法以及边界对应相关。例如一个 5字节的类可能 会被扩展为8字节,在32位机器上可以提高更高效率的访问。类数据成员的存储顺序C++标准并没用硬性的规定,多数的编译器按照成员变量声明的顺序存储,静态成员变量统一放在全局存储区。非静态成员的存储,一般按照声明的顺序存储,与编译器相关。继承体系中,类的大小会跟是否包含虚函数以及边界对齐相关。