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

标签 c++ inheritance polymorphism

假设我有一个父类:

Class Parent{
public:
virtual void doSomething(){}
}

和两个 child :

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 值。

关于c++ - 从具有相同虚函数的父派生时如何调用子函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9808479/

相关文章:

java - 如何根据子类类型调用java方法?

c++ - 为什么要使用 const 进行隐式转换?

c++ - 从父类调用方法

C++: Operator= 多态性重载

c++ - 无法使用 ncurses 确定终端大小

java - 为什么调用父类方法?

带有泛型的 Java 工厂模式

c++ - 有没有直接的方法可以在编译时获取vtable的地址?

Java - 具有相同方法的不同对象的数组

java - 将子类存储在父类(super class)数组中并使用子类的方法(Java)