C++ 继承
一、什么叫继承?
继承是从已有的类创建新类的过程,这使得创建和维护一个应用程序变得更容易,达到了重用代码功能和提高执行时间的效果(你父亲拥有的东西,你也可以拿着用)。
在C++ 类中,如类B继承于类A,则类A 叫做基类或者父类,则类B叫做派生类或者子类。
二、继承怎么用?
class <派生类名>:<继承方式1><基类名1>,<继承方式2><基类名2>,.....
{
<派生类类体>
};
三、继承类型
当一个类派生自基类,该基类可以被继承为public、protected、或private三种类型,继承类型是通过访问修饰符指定的。
(1)共有继承(public):一个类派生自基类,基类的共有成员也是派生类的共有成员,基类的保护成员也是派生类的保护成员,基类的私有成员不能直接被派生类访问,但是可以通过调用基类的公有和保护成员来访问;
(2)保护继承(protected):当一个类派生自保护基类时,基类的公有和保护成员将成为派生类的保护成员;
(3)私有继承(pvivate):一个类派生自私有基类时,基类的共有和保护成员将成为派生类的私有成员。
四、无法被继承的成员
(1)基类的构造函数、拷贝构造函数与析构函数;
(2)基类的重载运算符;
(3)基类的友元函数;
五、继承之后的成员函数的隐写/重写
(1)父类与子类有同名函数,调用的时候总是调用子类的函数,此时父类成员函数被隐藏;
(2)一般子类继承过来的函数不适合子类,或者需要扩展 ,则需要重写父类的函数;
(3)函数返回值与参数可相同可不同;
六、构造函数调用顺序
构造一个派生类时,先调用父类构造函数
再调用成员对象构造函数(只跟声明顺序有关);
最后调用自身构造函数;
七、析构函数调用顺序
与构造函数相反。
八、多继承与多重继承
1.多继承:一个派生类有多个基类;
2.多重继承:一个派生类作为其他派生类的基类;
3.多重继承菱形问题
(1)描述:类A 为类B和类C的基类,类B和类C为类D的基类;
(2)数据冗余问题:
当 D 类继承于 B 类与 C 类,B 类与 C 类有一个共同的基类时,在创建 D 类的对象时,A 类的构造函数将会调用两次,相当于创建两个 A 类对象。
(3)二义性问题:
A类中成员变量,可以通过B和C去访问,此时会存在两个同种含义的变量。