1.构造函数
构造函数是为了初始化类中的数据成员。对于派生类而言,不会继承基类的构造函数,为完成派生类数据成员的初始化,需要在派生类中自己定义构造函数。
派生类的构造函数要负责调用基类的构造函数。若程序中不显示定义构造函数,则创建派生类对象时会调用编译器提供的默认构造函数。
总之:基类构造先调用,然后再派生类构造。
2.析构函数
派生类不会继承基类的析构函数。析构函数执行次序与构造函数相反,先要调用派生类的析构函数,然后再调用基类的析构函数。
3.继承权限
基类中的私有成员,派生类不会继承。
4.结构体、共同体
结构体struct:把不同类型的数据组合成一个整体,自定义类型。
共同体union:使几个不同类型的变量共同占用一段内存。
struct和union都有内存对齐,结构体的内存布局依赖于CPU、操作系统、编译器及编译时的对齐选项。
关于内存对齐,先让我们看四个重要的基本概念:1.数据类型自身的对齐值:对于char型数据,其自身对齐值为1,对于short型为2,对于int,float,double类型,其自身对齐值为4,单位字节。2.结构体或者类的自身对齐值:其成员中自身对齐值最大的那个值。3.指定对齐值:#pragma pack(n),n=1,2,4,8,16改变系统的对齐系数4.数据成员、结构体和类的有效对齐值:自身对齐值和指定对齐值中小的那个值。
关于内存对齐,先让我们看四个重要的基本概念:1.数据类型自身的对齐值:对于char型数据,其自身对齐值为1,对于short型为2,对于int,float,double类型,其自身对齐值为4,单位字节。2.结构体或者类的自身对齐值:其成员中自身对齐值最大的那个值。3.指定对齐值:#pragma pack(n),n=1,2,4,8,16改变系统的对齐系数4.数据成员、结构体和类的有效对齐值:自身对齐值和指定对齐值中小的那个值。