是 int & foo();一个左值?
Is int & foo(); an lvalue?
我知道可能还有其他类似的问题,但他们没有完全回答我的问题。
我一直在浏览有关 C++
类型推导的讲座中的一些幻灯片,在其中一张中我发现了以下语句:
int & foo(); // foo() is lvalue;
起初,我认为这是错误的 - foo
是一个函数,它不能被赋值,它不是一个左值。但现在我想作者可能有不同的想法。也就是说,函数调用可能是一个左值,而不是函数本身。
换句话说:
foo
是左值吗?
foo()
是左值吗?
- 函数(不是函数调用)是否可以分配给(即
foo = something;
)?
- "lvalue is every object/thing that can be assigned to" - 这个说法总是正确和准确的吗?
问题 4
需要更多解释。有了它,我试图理解什么是左值。我看到的另一个定义是:"lvalues have storage addresses that can be obtained"。我不确定 storage 地址到底是什么,但以我们的函数 foo
为例 - 我们绝对可以获得 some 地址那个功能。在 C++
中,它只是函数的名称
foo; // returns the address of funtion 'foo'
但与此同时,我认为我们永远无法分配给 foo
(问题 3
)。那么 - 它是不是左值?
如果您回答全部 4 点,我将不胜感激。我将问题标记为 C++
而不是 C++11
因为我相信该问题适用于该语言的所有版本。但是,如果有任何差异,请指出。
is foo
an lvalue?
是的。指定函数的主要表达式是 lvalue。但是,在某些情况下,该函数会隐式转换为指针;该指针是一个 prvalue(或者只是一个 rvalue,在 C++11 之前)。
is foo()
an lvalue?
是的。如果结果是 lvalue 引用类型,则函数调用的值是 lvalue,如此处所示。
can a fuction (not a function call) ever be assigned to
没有。只能将可修改的对象分配给。
"lvalue is every object/thing that can be assigned to" - is this statement always correct and accurate?
没有。 lvalue 是一个指定函数或对象的表达式。只有指定了一个可修改的对象,它才能被赋值。
我知道可能还有其他类似的问题,但他们没有完全回答我的问题。
我一直在浏览有关 C++
类型推导的讲座中的一些幻灯片,在其中一张中我发现了以下语句:
int & foo(); // foo() is lvalue;
起初,我认为这是错误的 - foo
是一个函数,它不能被赋值,它不是一个左值。但现在我想作者可能有不同的想法。也就是说,函数调用可能是一个左值,而不是函数本身。
换句话说:
foo
是左值吗?foo()
是左值吗?- 函数(不是函数调用)是否可以分配给(即
foo = something;
)? - "lvalue is every object/thing that can be assigned to" - 这个说法总是正确和准确的吗?
问题 4
需要更多解释。有了它,我试图理解什么是左值。我看到的另一个定义是:"lvalues have storage addresses that can be obtained"。我不确定 storage 地址到底是什么,但以我们的函数 foo
为例 - 我们绝对可以获得 some 地址那个功能。在 C++
中,它只是函数的名称
foo; // returns the address of funtion 'foo'
但与此同时,我认为我们永远无法分配给 foo
(问题 3
)。那么 - 它是不是左值?
如果您回答全部 4 点,我将不胜感激。我将问题标记为 C++
而不是 C++11
因为我相信该问题适用于该语言的所有版本。但是,如果有任何差异,请指出。
is
foo
an lvalue?
是的。指定函数的主要表达式是 lvalue。但是,在某些情况下,该函数会隐式转换为指针;该指针是一个 prvalue(或者只是一个 rvalue,在 C++11 之前)。
is
foo()
an lvalue?
是的。如果结果是 lvalue 引用类型,则函数调用的值是 lvalue,如此处所示。
can a fuction (not a function call) ever be assigned to
没有。只能将可修改的对象分配给。
"lvalue is every object/thing that can be assigned to" - is this statement always correct and accurate?
没有。 lvalue 是一个指定函数或对象的表达式。只有指定了一个可修改的对象,它才能被赋值。