Pan*_*sis 3 c++ casting copy-constructor virtual-inheritance
我有以下代码:
class A
{
};
class B: public virtual A
{
public:
B()
{
cerr << "B()";
}
B(const A& a)
{
cerr << "B(const A&)";
}
};
class C: public B
{
};
int main(int argc, char **argv)
{
B *b = new B(C());
}
Run Code Online (Sandbox Code Playgroud)
令我惊讶的是,B(const A&a)没有被调用.这是为什么?
B 还有一个声明为隐式声明的复制构造函数
B(const B&);
Run Code Online (Sandbox Code Playgroud)
这个隐式声明的成员函数被调用,因为它C比用户声明的构造函数更适合类型的参数B(const A&).
| 归档时间: |
|
| 查看次数: |
581 次 |
| 最近记录: |