首页 > 解决方案 > 一个变量在 C++ 中如何以及在哪里可能没有关联的名称?

问题描述

在 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++variablesreferencelanguage-lawyeridentifier

解决方案


正如评论中提到的,

void foo(int) {}
//          ^

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

[basic.pre]/6

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

它显然不是参考,但它是一个对象吗?是的。

[intro.object]/1

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

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


推荐阅读