我们应该从基本类型迁移吗?

主要观点:讨论 C++中移动语义与基本类型的交集,思考基本类型是否可移动,以及实际移动基本类型时的情况和应采取的措施。
关键信息

  • C++基本类型包括整数、浮点数、字符等,C++11引入移动语义可高效转移资源。
  • 标准未提及标量或基本类型的移动操作,部分资料认为基本类型移动操作只是复制。
  • 示例显示移动std::string时原实例为空,移动int时原实例值不变,fundamental_move效率低。
  • 不应单独移动基本类型,但可将基本类型封装在类中并删除复制操作以表达不应复制。
    重要细节
  • 移动可通过移动构造函数或移动赋值运算符实现,需定义或由编译器生成。
  • 可通过类型特征is_move_constructibleis_move_assignable判断类型是否可移动。
  • 示例代码展示了移动不同类型的行为及效率问题。
  • 建议将基本类型封装在类中以增加代码的类型安全性和表达性。
阅读 9
0 条评论