【发布时间】:2014-11-11 19:35:23
【问题描述】:
以下代码是否仍会因缺少虚拟继承而受到负面影响?
如果是这样,如果class A 确实包含数据,那么负面影响是否与没有虚拟继承的多重继承的负面影响相同(或一样糟糕)会员?
class A
{
public :
virtual ~A ( ) { }
virtual int foo ( ) const = 0 ;
} ;
class B : public A
{
public :
virtual ~B ( ) { }
} ;
class C : public A
{
public :
virtual ~C ( ) { }
} ;
class D : public B , public C
{
public :
virtual int foo ( ) const { return 12 ; }
} ;
【问题讨论】:
-
它看起来 like you do need the
virtualsee here,也就是说,如果您希望从 B 派生的指向 A 的指针与从 C 派生的指针具有相同的值。 -
对了,需要在A中声明一个虚析构函数,实现为空。见stackoverflow.com/questions/461203/…
-
@Notinlist 谢谢你的收获。为了安全起见,我在 A、B 和 C 中添加了虚拟析构函数。
标签: c++ oop inheritance multiple-inheritance virtual-inheritance