变量在 C++ 中如何以及在哪里可能没有关联的名称?

Rob*_*rtS 7 c++ variables reference identifier language-lawyer

在 C++17 标准中声明(强调我的):

变量是由非静态数据成员或对象的引用声明引入的。变量的名称(如果有)表示引用或对象。”

来源:ISO/IEC 14882:2017 (C++17), §6/6 - “基本概念”

为什么是“如果有”?变量可以在 C++ 中省略名称吗?

如果我查看 cppreference:

“在 C++ 中,变量实际上只是为程序使用而保留的一点内存。您使用变量名来引用它,因此您无需担心它在内存中的位置(尽管您可以找到出它的内存地址,甚至可以指定它的位置,如果你愿意的话)。”

来源:https : //en.cppreference.com/book/intro/variables

或者维基百科(我知道它不是最好的来源,但仍然很常见):

“在计算机编程中,变量或标量是一个存储地址(由内存地址标识)与相关的符号名配对,其中包含一些已知或未知的信息量,称为值。变量名是通常的方法根据上下文,除了引用变量本身之外,还引用存储的值。”

来源:https : //en.wikipedia.org/wiki/Variable_(computer_science)

这表示变量应始终提供与其关联的名称,无论引用的对象/值是否被它访问。


  • 变量在 C++ 中是否可能没有名称?

  • 如果是,如何以及在哪里(如果可能有多种情况)?

或者,如果我误解了某些东西,那么“如果有的话”如何解释?


有关的:

变量、对象和引用之间有什么区别?

Rak*_*111 7

正如评论中提到的,

void foo(int) {}
//          ^
Run Code Online (Sandbox Code Playgroud)

定义一个没有名字的变量。

[基本.pre]/6 :

变量是由非静态数据成员或对象的引用声明引入的。

它显然不是一个引用,但它是一个对象吗?是的。

[介绍对象]/1

对象是由定义创建的,[...]

并且函数定义的参数是定义([basic.def]/2)。

  • @RobertSsupportsMonicaCellio [参数名称省略,C++ 与 C](/sf/ask/614376731/) (4认同)
  • @RobertS 是的,完全正确。这是另一个:`=delete;`d 函数是定义,对于它们来说,不命名参数可能是有意义的。 (2认同)