主要观点:讨论 C++中移动语义与基本类型的交集,思考基本类型是否可移动,以及实际移动基本类型时的情况和应采取的措施。
关键信息:
- C++基本类型包括整数、浮点数、字符等,C++11引入移动语义可高效转移资源。
- 标准未提及标量或基本类型的移动操作,部分资料认为基本类型移动操作只是复制。
- 示例显示移动
std::string
时原实例为空,移动int
时原实例值不变,fundamental_move
效率低。 - 不应单独移动基本类型,但可将基本类型封装在类中并删除复制操作以表达不应复制。
重要细节: - 移动可通过移动构造函数或移动赋值运算符实现,需定义或由编译器生成。
- 可通过类型特征
is_move_constructible
和is_move_assignable
判断类型是否可移动。 - 示例代码展示了移动不同类型的行为及效率问题。
- 建议将基本类型封装在类中以增加代码的类型安全性和表达性。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。