2 srhouyu srhouyu 于 2017.01.12 15:07 提问

C++11的问题:类的默认移动构造函数会做什么?

类默认的移动构造函数是否是这样:

  • 如果是简单值、静态数组、指针,就复制
  • 无视指针指向的内容
  • 如果是直接的对象,就调用其移动构造函数

是这样吗?

是否意味着,假如类及其成员的类都未写移动构造函数,那么当需要移动的时候,实际效果与默认拷贝构造函数是一样的?

1个回答

oyljerry
oyljerry   Ds   Rxr 2017.01.12 16:11
已采纳

没有实现移动构造,移动拷贝函数,就不能利用移动的优势,主要是性能的提升

但是C++11中的STL等模板库已经支持移动了,所以你的程序即使不改,当你使用vector,list等这些时,也会可能受益到移动构造函数带来的性能优化

oyljerry
oyljerry 回复srhouyu: 主要的收益是当你把一个vector赋值给另一个vector的时候
11 个月之前 回复
srhouyu
srhouyu 感谢。 如果往vector中push的对象中只有几个float成员,那么有没有可能从移动中获益呢? 例如这样: class Point { float x,y; }; std::vector<float> v; Point p; v.push_back(std::move(p)); 这种情况下,有获益的可能吗?
11 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!