0
我有这样的代码:C++ 11右值引用与与指针与“正常”的成员引用
class A{
};
class B{
B(A &&a) : a(std::move(a)){};
A a;
}
A a{};
B b{ std::move(a) };
// a is unusable
我用右值,因为我不希望对象是复制版。
我想改变class B
使用引用的:
class A{
};
class B{
B(A &a) : a(a){};
A &a;
}
A a{};
B b{ a };
// a is usable
会不会有这样的任何负面影响,除了活时的顾虑?我不重新分配a object
,所以我不需要指针。但我应该考虑它们吗?
在你的第一个例子中,对象被复制了。你需要'B(A && a):a(std :: move(a)){}'。 – aschepler
当然。我将编辑 – Nick
可能不是问题,但现在'B'外部的代码可以有效地修改'B'的状态(通过修改':: a')。这原本是不可能的。现在必须为'B :: a'的值在任何时候改变的可能性做好准备。 –