vei*_*eio 5 c++ inheritance copy-constructor
我有以下类结构:
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){}
};
Run Code Online (Sandbox Code Playgroud)
这给了我警告:
在复制构造函数“D”中:
警告:基类“A”应该在复制构造函数中显式初始化
我不理解。D 的复制构造函数调用copy-ctorB 的 B 调用copy-ctorA 的。 为什么它要我调用copy-ctorD 中的 A?
如果我这样做,copy-ctorA 的不会被调用两次吗?一次从 B 调用,一次从 D 调用。
对此的任何投入都非常感谢。