您的位置:首页 > 编程语言 > C语言/C++

透彻理解C++11新特性:右值引用、std::move、std::forward

2020-04-30 22:59 946 查看
[toc] C++11出现的右值相关语法可谓是很多C++程序员难以理解的新特性,不少人知其然而不知其所以然,面试被问到时大概就只知道可以减少开销,但是为什么减少开销、减少了多少开销、什么时候用...这些问题也不一定知道,于是我写下了这篇夹带自己理解的博文,希望它对你有所帮助。 # 浅拷贝、深拷贝 --- 在介绍右值引用等概念之前,可以先来认识下浅拷贝(shallow copy)和深拷贝(deep copy)。 这里举个例子: ```cpp class Vector{ int num; int* a; public: void ShallowCopy(Vector& v); void DeepCopy(Vector& v); }; ``` - 浅拷贝:按位拷贝对象,创建的新对象有着原始对象属性值的一份精确拷贝(但不包括指针指向的内存)。 ```cpp //浅拷贝 void Vector::ShallowCopy(Vector& v){ this.num = v.num; this.a = v.a; } ``` - 深拷贝:拷贝所有的属性(包括属性指向的动态分配的内存)。换句话说,当对象和它所引用的对象一起拷贝时即发生深拷贝。 ```cpp //深拷贝 void Vector::DeepCopy(Vector& v){ this.num = v.num; this.a = new int[num]; for(int i=0;i
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: