分配给向量的对象的范围
scope of object allocated to vectors?
I下面的代码,你能告诉我函数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);
}
createObj
中的push_back
调用创建了一个副本。
由于没有将指针传递到向量中,因此是安全的。如果您正在传递指针,则需要确保指针所指向的内容在需要时保持有效。
相关文章:
- 关于:C++中异常对象的范围:为什么我没有得到副本?
- 超出范围时使用对象
- 如何访问超出其块范围的对象?
- 在函数内创建的对象的范围 - 如果在函数外部存储和访问引用,它们是否有效?
- C++:返回一个基于范围 for 循环迭代器,其中包含继承对象
- 对象超出范围/转让所有权
- 从函数返回范围视图时,带有std::span:中间对象所有权的C++Ranges-v3
- 读取互斥对象范围之外的volatile变量,而不是std::atomic
- 是否可以在C++ (C) 中使用全局范围对象(结构)?
- 基于范围的 for 循环将对象移动到另一个容器中?
- 对象超出范围后,引用成员设置为 0
- 哪个函数负责C++全局范围内的类对象初始化?
- 非常量对象的向量似乎在基于范围的 for 循环中被视为常量
- 如果一个对象是在本地创建的,并在C++中作为异常抛出,那么本地对象如何在其范围之外有效,即在 catch 块中?
- 什么是OOP中的对象范围
- 在C++中,指向对象的指针将指向对象范围之外的内容
- 抛出的对象范围
- C++:在对象范围外调用析构函数
- 如何根据多个参数查找容器中的对象范围
- 将对象范围扩展到if语句之外