gpt4 book ai didi

c++ - 右值和左值引用

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:18:26 25 4
gpt4 key购买 nike

我有一个函数 printInt,如下所示。

void printInt(const int& a)
{
cout<<a<<endl;
}

当我使用以下参数调用 like 函数时

int a=5;
printInt(a);
printInt(5);

它工作得很好。但是当我将函数定义更改为

void printInt(int& a)
{
cout<<a<<endl;
}

这会导致调用 printInt(5) 出错。现在我的问题是为什么 const int& 既是左值引用又是右值引用,而 int& 只是左值引用。据我所知 int&& 是右值引用。那么单个 & 如何引用右值引用呢?

总结一下我的问题:

  1. 左值引用参数

    void printInt(int& a)
    {
    cout<<a<<endl;
    }
  2. 右值引用参数

    void printInt(int&& a)
    {
    cout<<a<<endl;
    }
  3. 左值和右值。但是如何呢?

    void printInt(const int& a)
    {
    cout<<a<<endl;
    }

最佳答案

const int& 是左值引用。问题是语言指定它可以绑定(bind)到右值。 int& 也是一个左值引用,但它不能那样做。这就是为什么第一个版本有效而​​第二个版本无效的原因。

关于c++ - 右值和左值引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31264731/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com