【问题标题】:how to correctly use vector of pointers to objects of class如何正确使用指向类对象的指针向量
【发布时间】:2016-04-26 14:27:49
【问题描述】:

我想知道为什么我编写的以下代码的第二部分不起作用。我正在练习指向类对象的指针向量。我尝试了两种方法,一种是定义一个类对象;另一种是定义一个指向对象的指针。第二种方式失败了。

#include <iostream>
#include <vector>

using namespace std;

class A{
    public:
        int id;
        A(int id):id(id){}
};

int main()
{
    vector<A*> A_vec, A_vec2;
    A a(5);
    A_vec.push_back(&a);
    cout << A_vec.size() << "; id " << A_vec[0]->id << endl;


    A *a1;
    a1->id = 5;
    A_vec2.push_back(a1);
    cout << A_vec2.size() << "; id " << A_vec2[0]->id << endl;
}

【问题讨论】:

标签: c++


【解决方案1】:

第二个 sn-p 不起作用,因为您从未为对象分配内存,所以a1 无处可去。

A *a1 =  new A(5);

...

// Once you're done with `a1', release the memory.
delete a1;

【讨论】:

  • 我可以再问一个问题吗? delete a1 会以第二种方式释放对象的内存,但看起来第一种方式内存不会被释放。那么这是否意味着我们应该使用第二种方式? @NPE
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-04-03
  • 2018-03-19
  • 1970-01-01
  • 1970-01-01
  • 2018-09-17
  • 2023-02-09
相关资源
最近更新 更多