引用限定符(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&) &;
};

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM