chapter1
struct
struct声明,class定义只会警告,实际由定义的关键字决定
对象
对象之中的变量在内存中的顺序为:
同access section中按照声明顺序,不同的access section按照section写的顺序
c++对象模型
对象内:
non-static data members(非静态数据成员) 放在类内
static data member(静态数据成员) 放在类外独立一块(独立在任何对象外)
non-static func 类外独立一块
static func 类外独立一块
vptr -> vptbl -> virtual func vptr在类内
若数据复杂,则可以把数据成员分离出来作为一个struct
在旧的c中,由class继承数据struct
现在的做法是把struct的指针/引用/对象放在class的private中
三种模型
程序模型:数据函数分离
抽象模型ADT
单一对象加上接口
面向对象模型
基类分配统一接口给所有的派生类
class大小计算
non-static data member的大小
virtual函数的vptr
virtual base class 的 virtual base class pointer
齐位造成的补足空间(可能补在成员间可能补在对象边界)
void*
可以指向任何对象,但是无法执行任何操作
多态
引用与指针时实现多态机制的根本
在派生类赋给(初