假设我有一个父类:
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();
如何正确调用由Son
定义的doSomething()
方法,而不是Parent
中的空函数
为了做到这一点,您需要将Parent
声明设置为指针或引用。
Parent* obj = new Son();
在它的当前形式中,您声明obj
为Parent
的实例。这意味着Son()
的赋值不会创建对Son
实例的引用,而是将对象切片为Parent
值。
- http://en.wikipedia.org/wiki/Object_slicing