JoeChenzzz

导航

引用限定符(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编辑  收藏  举报