// B C虚继承A,D public继承 B C ,有A *a = new D,a->fun(),fun是虚函数, // 并且B C都重写了,怎么保证a调用的是B重写的虚函数 #include <iostream> usingnamespacestd;   classA  { public:          virtual void fun() { cout <<"A::fun()."<< endl; } };   classB :public virtual A { public:          void fun() { cout <<"B::fun()."<< endl; } };   classC :public virtual A { public:          void fun() { cout <<"C::fun()."<< endl; } };   classD :public B,public C { public:          void fun() { cout <<"D::fun()."<< endl; } };   intmain() {          A* a =new D;          A* b =new B;              a = b;          a->fun();          return 0; }   // 输出:B::fun(). // 欢迎评论,欢迎拍砖,共同进步!
点赞 7

相关推荐

牛客网
牛客企业服务