理解此問題提前是理解臨時物件的概念,如果此概念模糊,請閱讀王健偉老師著作《c++新經典》14章13節,或者自己在網上查詢。
右值引用,簡單說,就是為了解決物件複製的效能問題,實現物件內屬性的淺拷貝,注意,是物件內屬性,不是物件的淺拷貝。
下面,我們直接看**理解。
#include #include using namespace std;
class school
;class person
delete sch;
sch = new school(*(src.sch));
cout << "拷貝賦值運算執行了" << endl;
return *this;
} person& operator=(person&& src) noexcept
delete sch;
sch = src.sch;
src.sch = nullptr;
cout << "移動賦值運算執行了" << endl;
return *this;
}};person::person()
person::~person()
person::person(const person& p)
person::person(person&& p) noexcept
static person getperson()
int main()
c 左值 右值 右值引用 左值引用
c 裡一切值必須屬於左值 右值兩者之一。左值 一切變數 包括用const修飾的變數 物件 包括引用都屬於左值 右值 一切字面值 可以是巨集 臨時無名物件 函式返回值 表示式 如a n 說明一下 函式返回值,返回的是某乙個型別的值,並不是返回變數。左值並不是說能放在 左邊的值就是左值 雖然用const...
c 左值 右值 左值引用 右值引用
在c語言中,左值認為是賦值語句的左側,右值認為是賦值語句的右側。在c 中,意義稍有不同。c 中,每乙個表示式會產生乙個左值或者右值,相應的,該表示式也就被稱作 左值表示式 右值表示式 乙個左值表示式的求值結果是乙個物件或者是乙個函式。左值可以當右值使用,而右值不能當左值使用。c prime 中這麼簡...
C 左值 右值 左值引用 右值引用
就變數而言,對於一些變數,我們只會讀取並使用它們的值,而不會改變他們的值 唯讀 對於其餘的變數,我們既會讀取它們的值,有的時候還會改變它們的值 讀寫 這是很常見的。在c 中,前一種變數稱為右值,後一種變數稱為左值,例如 int a 1 a是左值,1是右值稍稍不同的一點是,在c 中,乙個變數是左值還是...