C++11 引入了移動語義,它允許在不進行額外拷貝的情況下將資源從一個對象轉移到另一個對象。這可以提高性能,特別是在處理大型對象或臨時對象時。移動語義主要涉及到兩個關鍵概念:右值引用和移動構造函數。
int a = 42;
int&& rvalue_ref = a; // 右值引用
class MyClass {
public:
MyClass(MyClass&& other); // 移動構造函數
};
當使用移動語義時,編譯器會自動選擇合適的移動構造函數或移動賦值運算符來避免不必要的拷貝。例如:
std::vector<int> vec1 = {1, 2, 3};
std::vector<int> vec2 = std::move(vec1); // 使用移動構造函數,避免拷貝
總之,C++移動語義通過引入右值引用和移動構造函數,允許在不進行額外拷貝的情況下將資源從一個對象轉移到另一個對象,從而提高程序的性能。