如何从具有相同虚函数的父派生时调用子函数

时间:2012-03-21 16:09:56

标签: c++ inheritance polymorphism

假设我有一个父类:

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中的空函数

1 个答案:

答案 0 :(得分:7)

为了做到这一点,你需要使Parent声明成为指针或引用。

Parent* obj = new Son();

在当前形式中,您声明objParent的实例。这意味着来自Son()的分配不会创建对Son实例的引用,而是将对象切割为Parent值。