2013年10月18日

(原创)C++11改进我们的程序之move和完美转发

摘要: 本次要讲的是右值引用相关的几个函数:std::move, std::forward和成员的emplace_back,通过这些函数我们可以避免不必要的拷贝,提高程序性能。move是将对象的状态或者所有权从一个对象转移到另一个对象,只是转移,没有内存的搬迁或者内存拷贝。如图所示是深拷贝和move的区别。 这种移动语义是很有用的,比如我们一个对象中有一些指针资源或者动态数组,在对象的赋值或者拷贝时就不需要拷贝这些资源了。在c++11之前我们的拷贝构造函数和赋值函数可能要这样定义:假设一个A对象内部有一个资源m_ptr;A& A::operator=(const A& rhs){// 阅读全文

posted @ 2013-10-18 16:06 qicosmos(江南) 阅读(11515) 评论(3) 推荐(5) 编辑

导航