• 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.

    顺序 选择 循环 总结

  • 相关阅读:
    关于DataTables一些小结
    Oracle导入(imp )与导出(exp )
    HTTPS访问:weblogic下配置SSL
    highcharts 多数据+切换
    maven新建Spring MVC + MyBatis + Oracle的Web项目中pom.xml文件
    全选与反选(dom与jquery比较)
    Java中的try、catch、finally块简单的解析
    jquery中事件重复绑定以及解绑问题
    使用JS创建表格以及隔行换色(包括隔N行换色)
    wpf DataGrid加载行号
  • 原文地址:https://www.cnblogs.com/Braveliu/p/12501307.html
Copyright © 2020-2023  润新知