返回信息流菱形继承,我想知道一个func到底沿着哪一条继承线到达最下面的。我试图用一个virtual func,在A处设置为纯虚函数,在B和C里重写,然后在D里不重写。然后D的实例调用func函数,看输出是哪条线。结果,D的实例调用func不成功,说“D::func”不明确。。。
我很想知道,是沿着哪一条继承线下来的??
#include <iostream>
using namespace std ;
class A
{
public:
virtual void func()=0;
};
class B : virtual public A
{
public:
virtual void func(){cout<<"B"<<endl;}
};
class C : virtual public A
{
public :
virtual void func(){cout<<"C"<<endl; }
};
class D : virtual public B , virtual public C
{
public:
//virtual void func(){cout<<"D"<<endl;}
};
int main()
{
D d1;
d1.func();//Error, “ D::func ” 不明确
system("pause");
return 0 ;
}
这是一条镜像帖。来源:北邮人论坛 / cpp / #84013同步于 2014/11/9
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
虚继承,一个问题??
t330
2014/11/9镜像同步3 回复
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复