c++继承
继承:继承是实现复用的重要手段,共享公有的东西,然后实现各自不同的东西。
画个图说明下我理解的继承:
我们把上图的类A叫做基类(父类),把类B叫做派生类(子类)。从图中可以看出,类B在继承了类A后拥有了类A的资源。
继承的关系分为三类:
public: 共有继承
Protected:保护继承
private:私有继承
这三种关系和类中的三种成员访问限定符一一对应。
每一种继承关系下,子类对父类成员的访问权限都会发生变化。c++中继承方式默认是private(私有),所以一定要写清继承方式
不管以任何方式继承,父类的private成员子类都是无法访问的,父类的public成员属性随子类的继承属性而变(子类的继承属性是什么,子类继承
父类public成员就是什么属性);父类的protected成员在子类private继承属性下是私有的,其他情况都是保护的。
通常情况下的继承都是public继承,极少情况下是private继承和protected继承。
赋值兼容:
总结一下,从空间大小来说:赋值 只能大空间赋给小空间,指针只能小空间指向大空间,否则都会存在内存越界。
*在c++中父类中的友元和静态成员时不能被继承的。
继承模板:
解决菱形继承带来的数据冗余和二义性问题:虚拟继承(C++使用虚拟继承(Virtual Inheritance),使得派生类如果继承 基类多次,但只有一份基类的拷贝在派生类对象中。)