zoukankan      html  css  js  c++  java
  • 右值引用

     1 1.左值引用(T&), 只能绑定左值
     2 2.右值引用(T&&)只能绑右值
     3  生命周期只有一行(有名字之后,编译器认为是左值)
     4 3.常量左值 左值右值都能绑定
     5 4.已命名的右值引用(左值)
     6 
     7 test code:
     8 
     9 class A
    10 {
    11 public:
    12     A();
    13     ~A();
    14     A(const A&);
    15     A(A&&);
    16     A operator=(const A& a);
    17     A operator=(const A&& a);
    18     int val{23};
    19 };
    20 
    21 int main()
    22 {
    23     A a;
    24     cout << "call:" << endl;
    25     A& tmp = a;
    26     func_val(tmp);
    27     //右值-> 对象
    28     func_val(std::move(a));
    29     cout << "-------------" << endl;
    30     //直接传引用
    31     func_refer(tmp);
    32     //右值引用 -> 常引用
    33     func_refer(std::move(tmp));
    34     cout << "-------------" << endl;
    35     // 右值
    36     func_rval(std::move(tmp));
    37     A&& atmp = std::move(tmp);
    38     //func_rval(atmp);
    39     cout << "-------------" << endl;
    40 
    41 A aa = tmp;//拷贝构造函数
    42     //aa = tmp;
    43     A&& arval = std::move(tmp);
    44     A ad = std::move(tmp);
    45     A ad1 = arval;
    46     //赋值函数
    47     ad = arval;
    48     //移动赋值函数
    49     ad = std::move(tmp);
    50     A ta;
    51     A tt = std::move(ta);
    52     std::string m = "abc";
    53     std::string && ma = std::move(m);
    54     std::string mm = ma;
    55 
    56 return 0;
    57 }
  • 相关阅读:
    准备工作
    个人作业感言
    年度书单-结对编程
    案例分析
    编程作业_词频统计
    2、阅读任务
    1、准备工作
    个人作业获奖感言
    3 20210405-1 案例分析作业
    202103226-1 编程作业
  • 原文地址:https://www.cnblogs.com/yang131/p/14372268.html
Copyright © 2011-2022 走看看