假设我有一个父类:
Class Parent{
public:
virtual void doSomething(){}
}
和两个孩子:
Class Son: public Parent{
public:
void doSomething(){
// Do one thing
}
}
Class Daughter: public Parent{
public:
void doSomething(){
// Do another thing
}
}
如果我像这样设置一个子类的实例:
Parent obj = Son();
如何正确调用doSomething()
定义的Son
方法,而不是Parent
中的空函数
答案 0 :(得分:7)
为了做到这一点,你需要使Parent
声明成为指针或引用。
Parent* obj = new Son();
在当前形式中,您声明obj
是Parent
的实例。这意味着来自Son()
的分配不会创建对Son
实例的引用,而是将对象切割为Parent
值。