【发布时间】:2012-04-15 11:10:59
【问题描述】:
鉴于一个类实际上是可移动的,手动实现类的移动构造函数和移动赋值运算符很快就会变得乏味。
我想知道什么时候这样做实际上是一个沉重、沉重、过早的优化?
例如,如果一个类只有微不足道的 POD 数据或本身定义了移动构造函数和移动赋值运算符的成员,那么我猜编译器要么只是优化大量的垃圾(在POD),否则使用成员的移动构造函数和移动赋值运算符。
但这能保证吗?在什么情况下我应该期望明确需要实现移动构造函数和移动赋值运算符?
编辑: 正如下面 Nicol Bolas 在https://stackoverflow.com/a/9966105/6345 对他的回答的评论中提到的,使用 Visual Studio 11 Beta(及之前)no 移动构造函数或移动赋值运算符永远自动生成。参考:http://blogs.msdn.com/b/vcblog/archive/2011/09/12/10209291.aspx
【问题讨论】:
标签: c++ optimization c++11 move-semantics