
如图基类Person被派生类student公有继承。
一般来说派生类的数据字节数要长一些,而基类的要短一些,所以可以这样理解派生类对象可以赋给基类对象,因为可以充满基类,而反过来不行,积累的数据量太少不能充满派生类,同理派生类可以赋给基类的指针和引用,然而基类的指针可能可以赋给派生类,条件是这个积累的指针本身就指向派生类的对象。
1.继承中的作用域,若派生类中存在与基类的同名变量和函数,则派生类的同名变量会对基类的同名变量进行隐藏若不加作用域限定符只会优先访问派生类的成员变量,小提一下,函数重载只会出现在同一作用域中,这种不是同一作用域的同名函数叫函数的重定义。
初始化列表:有些成员变量在类中声明好后要初始化必须使用初始化列表,例如存在于静态区的常量,和引用,以及没有默认构造函数的自定义类型,因为常量在定义时就必须初始化,引用也必须在定义时有被引用的对象,自定义类型在使用时也必须初始化。
类在实例化时需要调用默认的构造函数,但是继承来的基类中的变量要初始化他用常规的初始化方法肯定是不行的,所以先得在初始化列表时调用基类的构造函数构造好以后再完成派生类的构造
初始化列表基类时使用匿名初始化,可以根据需求灵活调用基类中的各种构造函数,拷贝就用拷贝,重载赋值运算符就用重载赋值运算符,
析构的话是先析构基类再析构派生类,要注意的是派生类的析构函数与积累的析构函数构成隐藏: