专业编程基础技术教程

网站首页 > 基础教程 正文

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

ccvgpt 2024-10-12 13:51:45 基础教程 9 ℃

春节过后第一天上班,文章继续。

string类是C++标准库中一个很重要的类,使用非常方便。但是它存在一个问题:无论是否需要,拷贝构造函数和赋值运算符都会生成文字列的拷贝。

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

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

示例

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

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

执行结果

qt5.0环境中,移动版本需要的时间大概是拷贝版本的40%,也就是说,速度快了一倍以上。

作者观点

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


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

关注【面向对象思考】,轻松学习每一天!

面向对象设计,面向对象编程,面向对象思考!

最近发表
标签列表