gpt4 book ai didi

c++ - 混淆 L 值和 R 值括号

转载 作者:搜寻专家 更新时间:2023-10-31 01:00:16 25 4
gpt4 key购买 nike

在这个例子中here在底部,定义了示例性的左值:

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

我不确定 foo() 是什么?乍一看它像一个函数/方法?

int& foo()int& foo; 一样吗?

但另一方面,我的编译器说

Error: 'foo' declared as reference but not initialized int & foo;

与右值 foobar() 相同:

  // rvalues:
int foobar();
int j = 0;
j = foobar(); // ok, foobar() is an rvalue
int* p2 = &foobar(); // error, cannot take the address of an rvalue

最佳答案

是的,它是“函数/方法”,返回对 int 的引用。或者,更准确地说,这是这样一个函数的声明,而不是定义:它说这样的函数存在,但不提供实际代码(因为代码与示例无关)。比较如何在头文件中定义函数。

类似功能的可能代码示例:

int a, b;
int& foo(bool which) {
if (which) return a;
else return b;
}

...
foo(true) = 10; // works as a = 10;

关于c++ - 混淆 L 值和 R 值括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31455394/

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