【发布时间】:2020-10-13 16:21:11
【问题描述】:
在 C++17 标准中声明(强调我的):
“变量是由非静态数据成员或对象以外的引用的声明引入的。变量的名称,如果有,表示引用或对象。”
来源:ISO/IEC 14882:2017 (C++17),§6/6 -“基本概念”
为什么是“如果有的话”? C++中变量可以省略名字吗?
如果我查看 cppreference:
“在C++中,变量其实只是保留给程序使用的一点内存。你用变量名来引用它,所以你不用担心它在内存中的位置(尽管您可以找到它的内存地址,甚至可以指定它的位置,如果您愿意的话)。”
或维基百科(我知道它不是最好的来源,但仍然很常见):
“在计算机编程中,变量或标量是一个存储地址(由内存地址标识)与相关的符号名称配对,其中包含一些已知或未知数量的信息,称为值。变量名是引用存储值的常用方式,除了引用变量本身,具体取决于上下文。”
来源:https://en.wikipedia.org/wiki/Variable_(computer_science)
这表示变量应始终提供与其关联的名称,而不管引用的对象/值是否被它访问。
-
C++ 中变量是否可能没有名称?
-
如果是,如何以及在哪里(如果可能有多种情况)?
或者如果我误解了什么,那么“if any”该如何解释?
相关:
What is the difference between a variable, object, and reference?
【问题讨论】:
-
void foo(int /*no name*/)? -
是函数参数,注释是占位符。
-
@RobertSsupportsMonicaCellio 变量是问题中引用的任何对象或引用的声明。该函数声明了一个参数,它是一个
int类型的对象。所以是的,它是一个变量。注释不是声明,所以不,它不是变量。 -
@RobertSsupportsMonicaCellio 函数定义也可以省略参数名称,如果不使用参数。
-
@KamilCuk 这会创建一个无名对象,但它不是变量,因为它不是对象或引用的声明。
标签: c++ variables reference language-lawyer identifier