多态性中引用父 class 的构造函数

Constructor from reference to parent class in polymorphism

是否可以在派生 class 中创建构造函数,它接收指向另一个子 class 的父 class 的引用?

Child ch;
Parent &pr = ch;
Child ch1 = pr;

我猜可能是这样的:

Child(const Parent &pr){
*this = dynamic_cast<Child>(pr);
//Invalid target type 'Parent' for dynamic_cast; 
//target type must be a reference or pointer type to a defined class
}

您似乎想委托给 Child 的复制构造函数:

Child(const Parent& pr) :
    Child(dynamic_cast<const Child&>(pr))
//                     ^^^^^^^^^^^^
//              note:     const&
{}

如果 Parent/Child 关系不是预期的,您将得到一个 bad_cast 异常。

Demo