Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C+中的标识符+;不能是关键字,对吗?_C++_Identifier - Fatal编程技术网

C++ C+中的标识符+;不能是关键字,对吗?

C++ C+中的标识符+;不能是关键字,对吗?,c++,identifier,C++,Identifier,我可以用以下关键词来描述我当时的心情: 这个新的受私有保护的公案try throw long false signed union or not friend delete double auto class并使用true virtual volatile返回短静态中断,而在register catch else float时执行默认导出 这些关键字是标识符吗?我的问题是,我可以将它们与重新定义或重载一起使用吗?不,但为什么不呢?“不能用于程序员创建的标识符的标准保留关键字是:…”-对不起?!这

我可以用以下关键词来描述我当时的心情:

这个新的受私有保护的公案try throw long false signed union or not friend delete double auto class并使用true virtual volatile返回短静态中断,而在register catch else float时执行默认导出

这些关键字是标识符吗?我的问题是,我可以将它们与重新定义或重载一起使用吗?不,但为什么不呢?“不能用于程序员创建的标识符的标准保留关键字是:…”-对不起?!这意味着什么?我不明白为什么他们给了我一些关键词并告诉我不要使用它们。那么我应该使用什么标识符呢


谢谢你的回答

它的意思是不允许您声明以这些关键字中的一个作为名称的变量、函数和类。但是如果你用它们来做它们,一切都很好。例如,关键字“For”不能用作变量,即不能有

int for = 4; // Wrong!
但它可以(而且必须!)用于启动for循环

其他语言通过使用来解决这个问题。C++没有,所以你可以使用你的标识符的名字不能从保留关键字列表中选择。 这些关键字是标识符吗

不,关键字不是标识符

他们给了我一些关键词,告诉我不要使用它们。那么我应该使用什么标识符呢

对于标识符,必须使用非关键字的任意单词

用一个例子来解释更容易。
考虑这条线:

int foo = 42;
int friend = 42;
这里,
int
是一个关键字。此行将
foo
作为标识符。
但是,这一行:

int foo = 42;
int friend = 42;

将是格式错误的(即无法编译),因为它试图将关键字(
friend
)作为标识符。

关键字表示特殊的内容。你必须正确使用它们。我会读“那么我应该使用什么标识符?”字面上是其他任何东西。试试字典,太好了!你的答案很有用。我现在可以成为一名工程师。关键字是标识符。C++14 2.12p1:
表4中显示的标识符保留用作关键字…
它们是单独的标记(组?),但也是标识符。@KamilCuk-Huh。我将其解释为“无法创建具有下列名称的标识符,因为这些名称是为关键字保留的”。。。我认为这需要一个单独的问题。@KamilCuk标识符可以保留用作关键字,但关键字不是标识符。@KamilCuk可能更好的说法是“表4中显示的标识符不允许用作标识符,因为它们保留用作关键字”@Galik-这是一个矛盾的说法。“不允许将…中的标识符用作标识符”。在任何情况下,标准都是非常明确的——有些标识符是关键字,有些关键字不能用作标识符。这意味着关键字集和标识符集相交,但两者都不是另一个的完整子集。这也意味着这个答案是错误的。