引用限定符(c++11)
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&) &; };
posted on 2018-09-28 17:26 JoeChenzzz 阅读(1793) 评论(0) 编辑 收藏 举报