c++继承

来源:互联网 发布:ubuntu 调整分辨率 编辑:程序博客网 时间:2024/06/10 13:43

一.继承的介绍

继承是面向对象的一个重要特性。继承可以在已有类的基础上创建新的类,新类可以从一个或多个已有类中继承数据成员和成员函数,并且可以重新定义新的成员函数和数据成员,称已有类为父类,在它基础上建立的新类为派生类。

class student{private:int s1;}class mystudent:public student{private:int s2;}

在上面的关系中,mystudent继承自student,mystudent中不仅有它自己的数据成员s2,还有父类中的成员s1.需要注意的是,如果不显式的给出继承方式,那系统将默认为私有继承(private)。

继承方式基类public成员基类protected成员基类private成员派生类对象公有publicprotected不可访问只能访问public私有privateprivate不可访问不可访问保护protectedprotected不可访问不可访问
以上是三种继承方法下三种属性的成员函数所对应的访问权限。(单继承,多继承,菱形继承也符合上述继承规则)

二.派生类的构造函数和析构函数

1.创建派生类对象时,首先调用派生类构造函数,初始化列表,调用基类的构造函数完成基类对象的构造,随后再调用派生类的构造函数,当撤销派生类对象时,先调用派生类的析构函数,再调用基类的析构函数。

2.基类没有缺省构造函数,派生类中必须要再初始化列表中显式给出基类名和参数列表。

3.基类没有定义带参数的构造函数,那么派生类中可以定义构造函数也可以不定义构造函数;基类有带参数的构造函数,派生类一定要给出自己的构造函数。

三.虚基类

如果一个类有多个直接基类,而这些直接基类又有一个共同的基类,则再最底层的派生类中会保留这个间接的共同基类数据成员的多份同名成员。再访问这些同名成员的时候,必须再派生类的对象名后你男增加直接基类名,使其唯一的标识一个成员,以免产生二义性。

class student:virtual public mystudent{.....}
四.赋值兼容规则(public的继承方式下)

1.可以把派生类中的对象赋值给基类对象(可以把派生类中的对象看成是基类对象)

2.基类中的指针或引用可以指向派生类中的对象或引用。