摘要: 移动语义 移动语义是c++11最为重要的特性之一,但这不代表着我们可以在任何时候都无脑地使用它。 在以下几个情况下,移动语义并没有什么用处。 没有移动操作:要移动的对象没有提供移动操作,所以移动的写法也会变成复制操作。 比如对于STL库中的array容器而言,他的元素都直接存储在了对象当中,并没有一 阅读全文
posted @ 2023-06-04 18:54 icecreamjn 阅读(53) 评论(0) 推荐(0)
摘要: template<typename T> void func(T&& param); 对于一个通用引用,只有当实参被用来实例化通用引用形参时,才会推导形参T。 编码机制是简单的。当左值实参被传入时,T被推导为左值引用。当右值被传入时,T被推导为非引用。 Widget widgetFactory(); 阅读全文
posted @ 2023-06-04 18:23 icecreamjn 阅读(43) 评论(0) 推荐(0)
摘要: 移动语义使编译器有可能用廉价的移动操作来代替昂贵的拷贝操作。正如拷贝构造函数和拷贝赋值操作符给了你控制拷贝语义的权力,移动构造函数和移动赋值操作符也给了你控制移动语义的权力。移动语义也允许创建只可移动(move-only)的类型,例如std::unique_ptr,std::future和std:: 阅读全文
posted @ 2023-06-04 17:21 icecreamjn 阅读(63) 评论(0) 推荐(0)