来自Java背景我很困惑C++如何允许按值传递对象.关于何时通过值传递对象,我有一个概念上的疑问:
void add_to_vector(vector<SomeClass>& v, SomeClass var) {
v.push_back(var);
}
Run Code Online (Sandbox Code Playgroud)
这在概念上是否正确?这就是为什么我觉得这是错误的:var正在通过值传递,并且对象的内存将在函数调用的堆栈上分配.然后将其添加到矢量中.在函数调用结束时,堆栈将被清除,因此被引用的对象var也将被清除.因此,vector现在将包含一个在函数调用后不再存在的对象.
我错过了什么吗?