我有以下类结构:
class A{
A(){}
A(const A& src){}
};
class B : virtual A {
B():A(){}
B(const B& src):A(src){}
};
class C : virtual A {
C():A(){}
C(const C& src):A(src){}
};
class D : virtual B, virtual C {
D():B(),C(){}
D(const D& src):B(src),C(src){}
};
这让我产生了警告:
在复制构造函数“D”中: 警告:应明确初始化基类“A”
我不明白这个警告的含义。D的复制构造函数调用B的复制构造函数,然后调用A的复制构造函数。为什么它要求我在D中调用A的复制构造函数呢?
如果我这样做,A的复制构造函数不会被调用两次吗?一次是从B调用的,一次是从D调用的。
非常感谢您对此的任何意见。