Push_back对象引用
push_back object reference
当我看到这段代码时,我想知道它是否会正常运行。
对象将通过引用传递,所以实际上它不是它的副本。如果你把这个引用放入一个向量,而这个对象超出了作用域,那么它就不应该再被访问了。
但确实如此。因此,这工作的唯一原因可能是push_back()
创建了被引用对象的副本。这就是这种行为的答案吗?
struct struct1 {
int value;
};
std::vector<struct1> testVect;
void pushVect(struct1 & element) {
testVect.push_back(element);
}
void fillVect() {
struct1 s1;
for (int i = 0; i < 10; i++) {
s1.value = i;
pushVect(s1);
}
}
vector的push_back
方法负责自己复制:来自c++参考
在vector对象的最后一个元素之后,在vector对象的末尾添加一个新元素。val的内容被复制(或移动)到新元素中。
在调用
期间 estVect.push_back(element);
vector与副本一起工作。所以没有问题。
相关文章:
- 返回常量对象引用 (getter) 和仅返回字符串有什么区别?
- 我们可以有一个 setter 成员函数作为从 const 对象引用的 const 吗?
- C++对象引用返回不同的值
- 对象引用中的字段以不同的方法返回不同的值
- 通过向构造函数其他对象引用页面来创建对象
- 为什么在对象引用恒定时允许更改为另一个类的指针的成员变量
- 如何在C++中读取 HDF5 对象引用
- C++ 未定义的对象引用
- 从函数返回 libconfig 类设置对象引用
- qt vsaddin错误对象引用未设置为对象的istanse
- 在这种情况下,为什么使用 *此必需的对象引用返回对象引用
- 基本C - 构造contaning对象引用,并将其作为方法参数传递
- C :将对象引用作为参数给出错误:呼叫class :: function()的匹配函数
- C++OOP基础知识-是否正确返回对象引用
- 使用对象引用(可能)在调用destructor后使用对象引用
- 创建返回对象引用的成员函数的最简单方法
- 如何在C++上使用对象引用删除对象
- JNI/Android NDK-维护全局对象引用
- 为什么有些类方法返回"*this"(self的对象引用)?
- 在C++中返回伪对象引用的规则