1. 程式人生 > >c++Rvalue引用說明

c++Rvalue引用說明

take 兩個 can family error ror 地址 至少 ann

1.介紹

  Rvalue引用至少結決了兩個問題

    1.實現移動語義

    2.完美轉發

    rvalue lvalue沒有明確的定義,大致定義如下:

    lvalue:可以取地址

    rvalue:不可取地址

    

 // lvalues:
  //
  int i = 42;
  i = 43; // ok, i is an lvalue
  int* p = &i; // ok, i is an lvalue
  int& foo();
  foo() = 42; // ok, foo() is an lvalue
  int* p1 = &foo(); // ok, foo() is an lvalue

  // rvalues:
  //
  int foobar();
  int j = 0;
  j = foobar(); // ok, foobar() is an rvalue
  int* p2 = &foobar(); // error, cannot take the address of an rvalue
  j = 42; // ok, 42 is an rvalue
2.移動語義



c++Rvalue引用說明