我对 C++ 比较陌生,我想知道在以下情况下是否复制了结构:
struct foo {
int i;
std::vector<int> bar;
}
class Foobar {
foo m_foo;
void store(foo& f) {
this->m_foo = f;
}
}
void main() {
Foobar foobar;
{
foo f;
f.i = 1;
f.bar.insert(2);
foobar.store(f);
}
// will a copy of f still exist in foobar.m_foo, or am I storing a NULL-Pointer at this point?
}
我问这个问题的原因是我最初是一个 .NET 开发人员,如果你将它们传递给一个函数(而不是类),那么在 .NET 结构中它们将被复制。我很确定如果 store 没有声明为通过引用获取 f ,它将被复制,但我无法更改此代码。
编辑:更新了代码,因为我不知道这vector.insert
会影响我的问题。就我而言,我将结构存储为类中的成员,而不是向量。所以我的问题真的是:将f
被复制this->m_foo = f;
?