小编Ste*_*att的帖子

shared_ptrs的矢量表现得很神秘

我创建了一个Base类shared_ptrs 的向量来保存Derived类shared_ptr,并遇到一些问题.

以下简化示例显示了会发生什么.

#include <iostream>
#include <memory>
#include <vector>

using namespace std;

class Base {
public:
    Base(int i) : val(i) {}
    int val;
};

class Derived : public Base {
  public:
    Derived(int i) : Base(i) {}  
};

int main()
{
    vector<shared_ptr<Base>> vec1{
        make_shared<Base>(5),
        make_shared<Base>(99),
        make_shared<Base>(18)};

    for (auto const e : vec1)
        cout << e->val << endl;
    cout << endl;

    vector<shared_ptr<Derived>> vec2{
        make_shared<Derived>(5),
        make_shared<Derived>(99),
        make_shared<Derived>(18)};

    for (auto const e : vec2)
        cout << …
Run Code Online (Sandbox Code Playgroud)

c++ inheritance pointers vector shared-ptr

4
推荐指数
1
解决办法
139
查看次数

标签 统计

c++ ×1

inheritance ×1

pointers ×1

shared-ptr ×1

vector ×1