有关unique_ptr和类继承的问题

时间:2019-04-22 21:29:38

标签: c++

所以我有三个班级

class Base {
   virtual int foo() { return 1; }
};
class Child: public Base {
   virtual int foo() { return 2; }
 };
class SecondChild: public Base {
   virtual int foo() { return 3; }
 };

我本来是将它们存储在向量中

std::vector<Base> myList;

列表可以由Child或SecondChild组成,但是我的问题是我是否想跑步

foo();

无论我最初用于创建对象的两个派生类中的哪一个,它将始终使用Base::foo。这对我来说很有意义,但是我发现如果我用std::vector<std::unique_ptr<Base>>替换std :: vector,它将运行派生的foo函数。这是我想要的行为,但我不知道为什么会这样。

所以我的问题是,std::unique_ptr<Base>允许我这样做的区别是什么,这是不好的做法吗?我看了一下文档,但大部分内容我都不理解

0 个答案:

没有答案