首页  >  文章  >  后端开发  >  为什么我不能将非常量左值引用绑定到 C 中的右值?

为什么我不能将非常量左值引用绑定到 C 中的右值?

DDD
DDD原创
2024-10-31 04:07:34295浏览

 Why Can't I Bind a Non-Const Lvalue Reference to an Rvalue in C  ?

无法将非常量左值引用绑定到右值:解决方案

给定的代码片段在初始化类 Foo 的对象时遇到错误在 Bar 类的构造函数中。错误消息表明非常量左值引用 (Foo f) 正在绑定到右值(调用 genValue() 的结果)。

在 C 中,非常量引用参数只能引用命名的变量(左值)。然而,genValue() 的结果是一个临时值(右值)。为了解决这个问题,我们需要通过值(int)传递 genValue() 的值。

<code class="cpp">class Foo {
public:
    Foo(int x) {
        this->x = x;
    }
private:
    int x;
};

class Bar {
public:
    Bar(): f(genValue()) {
    }
private:
    Foo f;

    int genValue() {
        int x;
        // do something ...
        x = 1;
        return x;
    }
};</code>

通过将构造函数参数更改为 int,我们现在可以在构造函数范围内初始化 Foo 对象,而无需任何错误。

以上是为什么我不能将非常量左值引用绑定到 C 中的右值?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn