继承和派生:
继承:B类拥有A的全部特点,A作为基类,B作为子类(派生类)
子类有基类的全部成员函数和成员变量,不论private、protected、public,但子类的成员函数中不能访问基类的private成员
子类对象的体积等于基类对象的体积加上子类对象自己的成员变量的体积。子类对象中包含着基类对象,而且基类对象的存储位置位于子类新增的成员变量之前。
访问范围说明符:
基类的private成员可以被基类的成员函数和基类的友元函数所访问
基类的protected成员可以被基类的成员函数、基类的友元函数、派生类的成员函数可以访问当前对象的基类的protected成员。
派生类的构造函数:
派生类对象包含基类对象,执行派生类构造函数之前先执行基类的构造函数,派生类交代基类初始化,形式为构造函数名(形参表):基类名(基类构造函数实参表){}
public继承的赋值兼容规则:
class base{};class derived:public base{};base b;derived d;
1、派生类的对象可以赋值给基类对象:b = d;在=没有被重载的情况下,会将d中继承的b的部分拷贝给b。
2、派生类对象可以初始化为基类的引用:base & br = d;
3、派生类对象的地址可以赋值给基类的指针:base * pb = &d;
如果派生方式不是public,上述三条不成立。