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 覆盖父类函数。

多态还有个关键之处就是一切用指向基类的指针或引用来操作对象

http://zh.wikipedia.org/wiki/%E8%99%9A%E5%87%BD%E6%95%B0_%28%E7%A8%8B%E5%BA%8F%E8%AF%AD%E8%A8%80%29#C.2B.2B_2

 

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
}

 

 

虚函数解决继承同样基类的不同子类的方法统一调用问题

posted @ 2014-10-25 15:29  晨祷  阅读(174)  评论(0编辑  收藏  举报