多态性中引用父 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
异常。
是否可以在派生 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
异常。