【发布时间】:2013-03-29 02:56:35
【问题描述】:
我有一个可复制的类型,但复制起来可能很昂贵。我已经实现了移动构造函数和移动赋值。但是我有性能问题,人们在传递值时忘记调用 move()。
删除复制构造函数,而是为实际需要复制的极少数情况提供显式的 copy() 方法是不是很好的 C++11 风格?这在其他语言(Ruby、JavaScript)中是惯用的,但我不知道 C++ 标准库中有任何内容纯粹为了性能而禁止复制。例如,std::vector 是可复制的,而 std::unique_ptr 和 std::thread 由于其他原因是不可复制的。
【问题讨论】:
-
我想
copy成员函数的问题在于它破坏了所有使用赋值运算符的模板代码。
标签: c++ c++11 move-semantics