string类是C++标准库中一个很重要的类,使用非常方便。但是它存在一个问
题:无论是否需要,拷贝构造函数和赋值运算符都会生成文字列的拷贝。
C++11中引入了右值引用和移动的概念,使得程序员可以在构造,赋值的的时候可以选择拷贝还是移动对象,从而大幅度提高程序运行的效率。
示例
代码分别使用string的拷贝构造函数,赋值运算符的拷贝版本和移动版本进行比较。
两种方式的区别就在于移动版本使用了std::move(22行,25行)。
执行结果
qt5.0环境中,移动版本需要的时间大概是拷贝版本的40%。
作者观点
能用移动版本就不要用拷贝版本。
关注微信公众号【面向对象思考】