虚继承:
http://zh.wikipedia.org/wiki/%E8%99%9A%E7%BB%A7%E6%89%BF
解决了菱形继承问题
cB cC 继承cA cD继承cB,cC cD会有两个cA 函数出现二义性。cB,cC虚继承cA后 cD的继承结构里只有一个cA.
虚函数 -->解决父类调子类方法问题 OR 覆盖父类函数。
多态还有个关键之处就是一切用指向基类的指针或引用来操作对象
class C{
public:
virtual void fun1(){
printf("C_fun1");
}
virtual void fun2()=0;//纯虚函数 纯虚函数子类必需实现,类似于接口函数
} class C1:public C{ //这里要加public 不加的话访问父类的特性用不了
public:
void fun1(){
printf("C1_fun1");
}
virtual void fun2() override{
} } int main(){
C* c = new C1();
c->fun1();// C1_fun1
}
虚函数解决继承同样基类的不同子类的方法统一调用问题