【发布时间】:2014-09-11 03:07:30
【问题描述】:
在C++中我们可以将子类指针转换为父类,但是有什么办法可以将其转换回来:从父类中,从子类中获得,将子类返回给子类?
我的意思是:
class Parent
{
...
};
class Child : public Parent
{
...
};
int main(int argc, char const *argv[])
{
Child* child = new Child();
Parent* parent = child;
Child* old_child = parent; // how to do this??
return 0;
}
感谢您的回答。
【问题讨论】:
-
Child* old_child = dynamic_cast<Child*>(parent); -
是的。
static_cast<>anddynamic_cast<>可用于执行此操作。 -
@david.pfx 我已经麻烦将其标记为重复,所以只需将链接应用为评论。
-
需要这样做通常表明设计不好。您应该有一个可从父指针调用的虚函数。
-
Child* old_child = child;
标签: c++ oop polymorphism