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

C++ 从具有相同虚函数的父函数派生时如何调用子函数,c++,inheritance,polymorphism,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 } } 如果我像这样设置

假设我有一个父类:

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
实例的引用,而是将对象分割成一个


如果我想在stl向量中包含对象列表,该怎么办?这需要指针向量吗?@slayton是的。那完全正确。尽管您可能希望查看唯一的\u ptr或共享的\u ptr,以便于内存管理。另请参阅:另请参阅:另请参阅:另请参阅:另请参阅: