Rij*_*iju 8 c++ pointers reference rvalue rvalue-reference
我想通过引用(广义上,即A和/或A*)将A类对象(称之为a)传递给另一个B类的构造函数.我不希望在内部修改'a' B('a'是只读的,它的大小很大,这就是我想通过引用传递它的原因).我知道两个选择:
1)将'a'作为
const A & a_
Run Code Online (Sandbox Code Playgroud)
2)将'a'作为
const A * a_
Run Code Online (Sandbox Code Playgroud)
选项1的缺点是我可能错误地传递r值.选项2的缺点是我可能错误地传递空指针.
我的问题是:1)我对上述缺点是否正确?2)是否有另一种推荐的方式通过引用传递'a'?
我在下面的链接中看到了答案.但我很好奇是否有其他选项而不是该问题中的帖子. 在C++中通过引用传递指针是否有好处?
eml*_*lai 18
路过const A &.
您可以通过声明该函数的右值超载来防止意外传递右值= delete.例如:
struct A { };
void func(const A & a) { }
void func(A && a) = delete;
int main()
{
A a;
func(a); // compiles
func(A()); // doesn't compile
}
Run Code Online (Sandbox Code Playgroud)