类的继承(三种继承方式)
我只是挑着我不太会的地方整理,可能比较基础。
类的继承主要分为三类,公有继承,私有继承,保护继承。
然后主要记录一下不同的继承方法对派生类的不同作用。
1,派生类私有继承于基类。
这个时候,派生类继承了基类的公有部分和保护部分,并且继承的这一些数据成员以私有部分存在于派生类中。
基类的私有继承无法访问。
2,派生类保护继承于基类。
这个时候,派生类继承了基类的公有部分和保护部分,并且基类的公有部分和保护部分都以保护的状态存在于派生类中。
3,派生类公有继承于基类。
这个时候(排比句,三个这个时候能更好的表现出表现力),派生类继承了基类的公有成员和保护成员,并且!!! 基类的公有成员还是以公有的状态存在于派生类中,基类的保护成员还是以保护的状态存在于派生类中。
总之,三种继承方式都能集成基类的保护成员和公有成员,三种继承方式都不能访问基类的私有成员,但是不同的继承方式决定了继承的这一些成员在派生类中的不同状态。
然后再就是派生类的构造函数和析构函数 。
首先是派生类的构造函数,有两种情况必须定义构造函数,第一种,派生类需要,第二种,基类的构造函数中含有参数。派生类的参数总表中应包括全部基类和全部内嵌对象的所有参数,还有派生类新增的成员初始化的参数,当派生类属于多重继承时,声明中才会出现多个基类名(Student(char*name,intage,char*classname,char*name1,int age1):Person(name,age),Monitor(name1,age1)strcpy(ClassName,classname);}).
构造函数的执行顺序.
调用基类构造函数--->调用内嵌对象构造函数--->执行派生类构造函数体中的内容(按照样例就是先执行person,再执行monitor,再执行 student类)。
析构函数的执行顺序
和构造函数相反,先执行派生类构造函数-->内嵌对象构造函数--->基类构造函数。