c++ virtual 记录
虚继承:
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 }
虚函数解决继承同样基类的不同子类的方法统一调用问题