【问题标题】:How to Invoke Child Function when Deriving from Parent with identical virtual function从具有相同虚函数的父项派生时如何调用子函数
【发布时间】:2012-03-21 16:09:55
【问题描述】:

假设我有一个父类:

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

【问题讨论】:

标签: c++ inheritance polymorphism


【解决方案1】:

为此,您需要将Parent 声明设为指针或引用。

Parent* obj = new Son();

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

【讨论】:

  • 如果我想在一个 stl 向量中包含一个对象列表怎么办?那需要一个指针向量吗?
  • @slayton 是的。这是完全正确的。尽管您可能希望查看 unique_ptr 或 shared_ptr 以便于内存管理。
猜你喜欢
  • 2020-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-19
  • 2020-09-29
相关资源
最近更新 更多