C++11新特性(49)- 用移动类对象代替拷贝类对象

string类是C++标准库中一个很重要的类,使用非常方便。但是它存在一个问

题:无论是否需要,拷贝构造函数和赋值运算符都会生成文字列的拷贝。

C++11中引入了右值引用和移动的概念,使得程序员可以在构造,赋值的的时候可以选择拷贝还是移动对象,从而大幅度提高程序运行的效率。

示例

代码分别使用string的拷贝构造函数,赋值运算符的拷贝版本和移动版本进行比较。

两种方式的区别就在于移动版本使用了std::move(22行,25行)

执行结果

qt5.0环境中,移动版本需要的时间大概是拷贝版本的40%。

作者观点

能用移动版本就不要用拷贝版本。

觉得本文有帮助?请分享给更多人。

阅读更多更新文章,请扫描下面二维码,关注微信公众号【面向对象思考】

猜你喜欢

转载自blog.csdn.net/craftsman1970/article/details/81071092
今日推荐