右值引用示例

Posted wisdomroc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了右值引用示例相关的知识,希望对你有一定的参考价值。

int main(int argc, char *argv[])
{
    int t = 10;                         //t: 左值
    int t2 = t + 1;                     //t: 右值

    int a = 1;
    const int &b = a + 1;               // 左值引用
    //       int &b = a + 1;                     // 错误
    cout << b  << " " << a << endl;

    int c = 1;
    int &&c2 = c + 1;                   // 右值引用
    cout << c2 << " " << c << endl;

    int d = 1;
    int &&dd = std::move(d);            // 直接把 左值或者右值 转换成 右值引用
    cout << dd << " " << endl;          // 注意,在调用完std::move之后,不能再使用d, 只能用dd

    string s = "hello";
    vector<string> v ;
    v.push_back(std::move(s));          // 调用移动构造函数,掏空 s, 掏空后,最好不要使用s了 !!
    cout << v.front() << endl;
    cout << "s: " << s << endl;

    return 0;
}

  

std::move()的使用

以上是关于右值引用示例的主要内容,如果未能解决你的问题,请参考以下文章

唯一指针:左值引用与右值引用函数调用

如何将右值引用参数传递给 C++ 中的模板 operator() 函数?

从4行代码看右值引用

哪些类型的代码需要注意右值引用?

从4行代码看右值引用

[C++11]右值和右值引用