首页 > 代码库 > C++继承与派生

C++继承与派生

继承时,派生类包含基类除构造函数和析构函数之外的所有成员,构造函数和析构函数不能被继承;

覆盖:派生类中定义一个与基类数据成员或成员函数同名的成员,则替换基类的成员。

覆盖不是成员的重载,只是掩盖了从基类继承得到的同名成员,作用域声明后,仍可引用基类成员。可在派生类成员函数中引用基类成员,进行扩展。

1.吸收基类成员

2.改造基类成员

3.添加新的成员

 

类的继承方式:公有继承(成员属性不变)、保护继承(保护)、私有继承(私有)

 

当程序创建一个子类对象时,系统会为该类中的实例变量分配内存,也会为从父类中继承得到的所有实例变量分配内存,即使子类中定义了与父类中同名的实例变量。

 

二、派生类的构造函数和析构函数:构造函数调用顺序:先祖先、后客人(对象成员,按照声明顺序)、再自己

无论父类里面有没有虚函数,都可以定义指向子类实例的父类指针.
如果父类里没有虚函数,则使用父类指针,只能访问父类的成员,而不能访问子类里的成员.
如果父类里的虚函数不是纯虚函数,且子类里没有重写该虚函数,则用父类指针访问该虚函数的时候,跟访问父类里的普通函数一样.
如果父类里的虚函数不是纯虚函数,且子类里重写了该虚函数,则用父类指针访问该虚函数的时候访问的是子类里重写后的函数.
如果父类里的虚函数是纯虚函数,则父类是个抽象类,子类要想能够被实例化,则必须重写该纯虚函数.用父类指针访问该纯虚函数的时候,访问到的是子类里重写了的函数.

1.析构函数可以是虚函数,通过delete一个抽象类指针式,才能通过虚函数找到真正的虚构函数。

2.构造函数不能为虚函数。

3.析构函数可以是纯虚函数。

 

就类对象而言,相同类型的类对象是通过拷贝构造函数来完成整个复制过程的

 

C++继承与派生