C++ “是什么意思?”;限定词;?
“限定词”的含义是什么,“限定词”和“关键字”之间的区别是什么 对于C中的C++ “是什么意思?”;限定词;?,c++,c,C++,C,“限定词”的含义是什么,“限定词”和“关键字”之间的区别是什么 对于C中的volatile限定符,我们可以说volatile是一个关键字,那么“限定符”是什么意思呢?a限定符增加了一个额外的“质量”,例如指定变量的波动性或常量。它们类似于形容词:“变化无常的男人”、“反复无常的整数”、“清廉的女士”、“守旧的替身”。无论是否使用限定符,变量本身仍然占用相同的内存量,并且每个位对状态/值具有相同的解释或贡献。限定符只是指定如何访问它或将它存储在何处 关键字是预定义的保留标识符(可以说,请参见下文)
volatile
限定符,我们可以说volatile
是一个关键字,那么“限定符”是什么意思呢?a限定符增加了一个额外的“质量”,例如指定变量的波动性或常量。它们类似于形容词:“变化无常的男人”、“反复无常的整数”、“清廉的女士”、“守旧的替身”。无论是否使用限定符,变量本身仍然占用相同的内存量,并且每个位对状态/值具有相同的解释或贡献。限定符只是指定如何访问它或将它存储在何处
关键字是预定义的保留标识符(可以说,请参见下文),语言本身赋予这些标识符一些含义,而不是让您自由地用于自己的目的(即命名变量、类型、名称空间、函数…)
例子
和volatile
都是限定词和关键字const
,如果
,类
是关键字,但不是限定符命名空间
、std
、main
、iostream
、x
都是标识符,但既不是关键字也不是限定符myu计数器
相对于其他类型信息,限定符出现在哪里? 除了“限定词是什么意思”之外,我们还可以快速了解使用限定词的语法,如以下Zaibis评论所示: …[限定符]仅当[前面]没有任何内容时才限定后面的内容。因此,如果您想要一个指向非
const
对象的const
指针,您必须编写char*const var
关于标识符的一点(很多?)
标识符本身是词汇标记(C++源代码的不同部分):
- 以字母/字母字符或下划线开头
- 使用0个或更多字母数字或下划线继续
double
literal)、“0x0a”(这是十六进制文字)、“(f)”(这是三个词汇标记,中间是标识符“f”)
但是关键字是标识符吗?
对于C++,术语不被一致使用。在一般的计算使用中,关键字是标识符的子集,C++11标准中的一些位置/用法清楚地反映了:
- “表4中所示的标识符保留用作关键字”(2.12关键字中的第一句)
- “C++中的关键字或运算符标识符…”(从7.61.2注脚7)
(有一些操作符的可选形式-<代码>不< /COD>,<代码>和< /COD>,<代码> XOR ,<代码>或 -尽管恼人的Visual C++默认禁用它们,以避免使用旧代码而不是操作符。 正如Potatoswatter在评论中指出的那样,在许多其他地方,该标准将词汇标记
标识符
和关键字
定义为语法中相互排斥的标记:
- “有五种令牌:标识符、关键字等”(2.7令牌)
- 如果属性标记中包含满足标识符(2.11)语法要求的关键字(2.12)或替代标记(2.6),则将其视为标识符。(7.6.1.属性语法和语义2)
仍然不应该使用的非关键字标识符
某些标识符,如“STD”或“String”,在C++标准中有特定的用法,但它们不是关键字。一般来说,编译器本身不会将它们与您自己的代码区别对待,如果您没有包含任何标准指定的头,那么编译器可能甚至不知道标准强制使用的“std”。您可以创建自己的函数、变量或类型“std”。虽然不是个好主意。。。虽然理解关键字和标准库之间的一般划分是很好的,但是实现有自由的界限,所以你应该假设C++的特征在包含相关的头文件和你的用法匹配文档时工作,并且不做任何可能发生冲突的事情。限定词包含语义信息。Dario:很好的洞察力,但是任何需要提问的人如果没有更多的解释都不会理解:-)所有限定词(const、volatile、restrict)都是关键字;某些关键字(int、if、for)不是限定符。这适用于C和C++。@亚历克斯:*和&是类型的一部分,而不是资格。这就是为什么可以使用static_cast和const_cast添加或删除限定符,但不能将t转换为t*。。。它们只是根本不同的东西。类似地,静态和外部存储限定符不会影响数据的类型。。。就我所知,质询者指的是前面提到的关键词,而不是你所说的“为后面的内容添加质量”。如果我错了,请教我,但至少关于康斯特我很确定@Tony D但问题是如果有人认为它合格,那么接下来的内容他会写
char const*var
,但它只会合格,以防前面没有任何内容。所以,如果你想要一个指向非常量对象的指针,你必须写char*const-var
,而这是大部分人忘记的;)只是想添加。关键字不是主语言语法中的标识符,而是仅用于p