左右值引用

  • 左值引用:对等式int a = 5a的引用,如int& b = a;(const的左值引用是可以引用右值的,如const int& b = 5
  • 右值引用:对上面等式中的5的引用,如int&& b = 5;
  • 注意到右指引用其实是左值,左值通过move变成右值
  • 完美转发:经过forward转发的量是不会改变左右值属性的:
    #include<iostream>
    
    template<typename T>
    void print(T & t)
    {
       std::cout<<"左值"<<std::endl;
    }
    
    template<typename T>
    void print(T && t)
    {
       std::cout<<"右值"<<std::endl;
    }
    
    template<typename T>
    void testForward(T && v)
    {
       print(v);
      print(std::forward<T>(v));
      print(std::move(v));
    }
    
    int main()
    {
     testForward(1);
     std::cout << "======================" << std::endl;
     int x = 1;
     testForward(x);    
     return 0;
    }
    
    
posted @ 2024-04-17 23:19  铜锣湾陈昊男  阅读(4)  评论(0)    收藏  举报