1、简单的对象模型 - 每一个函数、变量按声明顺序把指针放入模型的slots(插槽)中
2、表格驱动对象模型 - 成员数据表格直接存放成员数据对象, 成员函数表格直接存放成员函数指针
3、c++对象模型 - 虚函数地址存放在虚表中, 第一个slot是type_info object。 noStatic member data 存放于每个class object之内,Static member data & noStatic member function & member function 存放于class object 之外(这就是 静态函数 成员函数 静态变量 都生成一份的原因)
4、关于合成默认构造弄得有点晕
5、编译器为未声明constructor的class合成一个default constructor(该默认构造仅对编译器有用)
1、 调用member object
2、 调用 base class 的default constructor
3、为每一个object初始化其virtual function机制
4、为每一个object初始化其virtual base class 机制
其他时候会合成implicit trivial default constructor(隐含的无用默认构造)它们实际上并不会被合成出来
6、成员变量初始化顺序取决于声明时候的顺序
7、class object 的大小主要由 编译器自己加上的额外Data member(如虚表指针), Alignment(对其)的需要
2、表格驱动对象模型 - 成员数据表格直接存放成员数据对象, 成员函数表格直接存放成员函数指针
3、c++对象模型 - 虚函数地址存放在虚表中, 第一个slot是type_info object。 noStatic member data 存放于每个class object之内,Static member data & noStatic member function & member function 存放于class object 之外(这就是 静态函数 成员函数 静态变量 都生成一份的原因)
4、关于合成默认构造弄得有点晕
5、编译器为未声明constructor的class合成一个default constructor(该默认构造仅对编译器有用)
1、 调用member object
2、 调用 base class 的default constructor
3、为每一个object初始化其virtual function机制
4、为每一个object初始化其virtual base class 机制
其他时候会合成implicit trivial default constructor(隐含的无用默认构造)它们实际上并不会被合成出来
6、成员变量初始化顺序取决于声明时候的顺序
7、class object 的大小主要由 编译器自己加上的额外Data member(如虚表指针), Alignment(对其)的需要