1.概念
1)下面這種情況將對一個右值調用成員函數、對右值賦值
string s1 = "abc", s2 = "def"; auto n = (s1 + s2).find('a'); //對右值調用成員函數 s1 + s2 = "wc"; //對右值賦值
2)舊標准中,沒有辦法阻止這種使用方式,c++11下,為了維持向后的兼容性,仍然允許向右值調用成員函數、向右值賦值,但是提供了一種阻止的方法:使用引用限定符&和&&來指明成員函數的this指針指向的是左值還是右值
class A { public: //和const成員函數中的const一樣,在成員函數的參數列表后加&或&&(必須同時出現在聲明和定義中)來限定this指針 //成員函數參數列表后既有const又有引用限定符的話,引用限定符必須在const限定符后面 A& operator=(const A&) &; };