Ton*_*roy 41
甲限定符增加了一个额外的"质量",例如指定一个变量的波动或常量性.它们与形容词类似:" 善变的人"," 挥发性的 "," 不朽的女士"," 常量双人".无论有没有限定符,变量本身仍然占用相同的内存量,并且每个位对状态/值具有相同的解释或贡献.限定符只是指定了如何访问它或存储位置.
关键字是预定义的保留标识符(可以说,见下文),语言本身赋予了一些含义,而不是让您自由使用(即命名您的变量,类型,命名空间,函数......).
volatile并且const都是限定词和关键词if,class,namespace是关键字,但不预选赛std,main,iostream,x,my_counter是所有标识符但既不是关键字也不预选赛http://www.cppreference.com/wiki/keywords/start上有完整的关键字列表.C++目前没有任何不是关键字的限定符(即它们都是"单词"而不是一些标点符号).
除了"限定词意味着什么"之外,快速使用限定符的语法 - 如下Zaibis评论:
...... [限定符]仅限定[之后]之前没有任何内容的内容.所以,如果你想要一个
const非const对象的指针你必须写char * const var...
标识符本身是词法标记(C++源代码的不同部分):
如果有帮助,您可以考虑正则表达式"[A-Za-z _] [A-Za-z_0-9]*"指定的标识符.例如"egg","string","__ f","x0"但不是 "4e4"(double文字),"0x0a"(这是一个十六进制文字),"(f)"(这是三个词汇标记,中间是标识符"f").
但是关键字标识符?
对于C++,术语不一致使用.在一般的计算用法中,关键字是标识符的子集,而C++ 11标准中的一些地方/用途清楚地反映了:
(有一些运营商的替代形式- ,not,,and -虽然烦人的Visual C++默认禁用它们,以避免破坏所使用他们,但不作为运营商的旧代码)xoror
正如Potatoswatter在评论中指出的那样,在许多其他地方,标准定义了词法标记,identifier并将其keyword作为语法中的互斥标记:
还有一个边缘情况,其中确定的上下文敏感:
某些标识符(如"std"或"string")具有C++标准中指定的特定用法 - 但它们不是关键字.通常,编译器本身不会将它们与您自己的代码区别对待,如果您不包含任何标准指定的头文件,那么编译器可能甚至不知道标准强制使用"std".您可以创建自己的函数,变量或称为"std"的类型.虽然不是一个好主意...虽然理解关键字和标准库之间的一般划分很好,但是实现可以自由地模糊边界,因此您应该假设C++功能在包含相关标头并且您的用法与文档匹配时起作用,并且不做任何可能发生冲突的事情.