我最近阅读了一篇关于 C++ 中新的移动语义的文章。这是关于如何最好地为大对象实现返回值的困惑。结论是,只需像按副本返回一样实现它,让编译器决定移动是否最有效。
现在我想知道这是否同时适用于函数参数。
目前我使用这样的 const 引用:
void setLargeObject(const LargeObject &obj) {
_obj = obj;
}
而不是简单的副本:
void setLargeObject(LargeObject obj) {
_obj = obj;
}
通过 const 引用传递的用于复制大对象的参数是否仍然是 C++11 及更高版本中的最佳实践?