C++11 ref-qualifiers
【1】右值和左值引用成员函数
【2】应用示例
简单的示例程序如下:
1 #include <iostream> 2 3 struct Test 4 { 5 // can be invoked on lvalue 6 void f() &; 7 8 // can be invoked on rvalue 9 void f() &&; 10 11 // can be invoked on const lvalue 12 void f() const &; 13 14 // can be invoked on const rvalue 15 void f() const &&; 16 }; 17 18 void Test::f() & 19 { 20 std::cout << "f() &" << std::endl; 21 } 22 23 void Test::f() && 24 { 25 std::cout << "f() &&" << std::endl; 26 } 27 28 void Test::f() const& 29 { 30 std::cout << "f() const &" << std::endl; 31 } 32 33 void Test::f() const && 34 { 35 std::cout << "f() const &&" << std::endl; 36 } 37 38 int main() 39 { 40 Test genObj; 41 42 genObj.f(); 43 // invokes the first function 44 // because genObj is a named object, hence lvalue 45 46 Test().f(); 47 // invokes the second function 48 // because Test() is an unnamed object, hence rvalue 49 50 const Test conObj; 51 52 conObj.f(); 53 // invokes the three function 54 // because genObj is a const named object, hence lvalue 55 56 const Test().f(); 57 // invokes the four function 58 // because const Test() is an const unnamed object, hence rvalue 59 60 system("pause"); 61 } 62 63 /* 64 f() & 65 f() && 66 f() const & 67 f() const && 68 请按任意键继续. . . 69 */
注意:
(1)与const成员函数中的const一样,引用符&作用是限定this指针。
(2)必须同时出现在声明和定义中。
(3)&和&&分别用来限定this指针指向的是左值还是右值。
(4)成员函数参数列表后既有const又有引用限定符的话,引用限定符必须在const限定符后面。
(5)引用限定符修饰的成员函数也算重载范畴的。
good good study, day day up.
顺序 选择 循环 总结