更多C++学习笔记,关注 wx公众号:cpp读书笔记
Item 41: Consider pass by value for copyable parameters that are cheap to move and always copied
有些函数的形参是可拷贝的。(在本条款中,“拷贝”一个形参通常意思是,将形参作为拷贝或移动操作的源对象。简介中提到,C++没有术语来区分拷贝操作得到的副本和移动操作得到的副本。)比如说,addName成员函数可以拷贝自己的形参到一个私有容器。为了提高效率,应该拷贝左值,移动右值。
class Widget {
public:
void addName(
本文探讨了C++11以后,对于移动成本低且总是被拷贝的可拷贝形参,按值传递的优势。C++98中避免按值传递主要是因为开销,但在C++11之后,右值引用和移动语义使得按值传递在某些情况下能提供接近引用传递的效率,同时避免了通用引用的复杂性和多版本函数的维护。不过,按值传递可能导致额外的移动操作,尤其在涉及动态内存分配时,且对基类形参可能导致对象切片问题。总之,对于特定类型的参数,按值传递是一种值得考虑的优化策略。
订阅专栏 解锁全文
1055

被折叠的 条评论
为什么被折叠?



