可能是重复问题:
在C++中,按值传递还是按常量引用传递更好?
我了解在C ++中通过值、指针和引用传递的差别,并且我认为在C ++中将对象按值传递(而不是按const引用)几乎总是一种编程错误。
void foo(Obj o); ... // Bad
void foo(const Obj &o); ... // Better
我能想到唯一适合使用值传递而不是const引用的情况,是当对象比引用更小,因此通过值传递更高效。但是,编译器难道不是为了确定这种情况而构建的吗?
为什么C++实际上需要值传递和const引用传递 - 编译器是否允许在适当的情况下自动将调用转换为(和从)const引用呢?
(似乎有数百个关于C++调用约定的问题,询问(例如)值和引用之间的差异 - 但我找不到一个问“为什么?”的。)
Obj o2(o);
作为第一行添加吗?这似乎毫无意义。此外,移动语义。 - user395760