1

在下面的代码中,请您告诉函数 getObjects() 中点对象的范围是否有效。我在 createObj() 中创建对象,因此对象“p”的范围仅限于 createObj()....vector 是否使用复制构造函数来处理这个问题?

void getObjects()
{
    vector<point> vec;
    creatObj(vec);
    // getting correct output for object allocated in vector vec.
}

void createObj(vector<point> &vec)
{
    point p;
    p.x=10;
    p.y=20;
    vec.push_back(p);
}
4

2 回答 2

4

一切都很好,因为push_back调用createObj创建了一个副本

于 2013-07-07T12:30:28.823 回答
0

由于您没有将指针传递给向量,因此您是安全的。如果您传入一个指针,则需要确保指针指向的内容在您需要时保持有效。

于 2013-07-07T12:31:04.593 回答