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

    顺序 选择 循环 总结

  • 相关阅读:
    Lua ip转整数
    纯lua实现Base64加密与解密
    lua之base64的解码和编码(三种方案实现)
    Lua 5.1 位操作(与,或,异或操作)
    Lua打印Table对象
    Lua 截取字符串(截取utf-8格式字符串)
    lua 截取字符,以及取字符个数(非字符串长度)
    lua 加密解密
    Openwrt与贝壳物联平台通讯示例
    php socket编程:使用socket_recv而不是socket_read
  • 原文地址:https://www.cnblogs.com/Braveliu/p/12501307.html
Copyright © 2020-2023  润新知