c++之保留字
读者的话
⼀般情况下,C++关键字也被称为C++保留字,但严格情况下应分为:关键字、替代标记、库保留名称。
总的来说,为了避免出现问题,就按照常规⽅法,不要打这些擦边球就⾏了。
⼀、C++ 关键字
关键字是组成编程语⾔词汇表的标识符,它们不能⽤于其他⽤途。
下表列出了C++的关键字,其中粗体也是ANSI C99标准中的关键字。
alignas alignof asm auto bool break case catch char char16_t char32_t class const const_cast constexpr continue decltype default delete do double dynamic_cast else enum explicit export extern false float for friend goto if inline int long mutable namespace new npexcept nullptr operator private protected public register reinterpret_cast return short signed sizeof static static_assert static_cast struct switch template this thread_local throw true try typedef typeid typename union unsigned using virtual void volatile wchar_t while
⼆、代替标记
C++还有⼀些运算符的字母代替表⽰,它们被称为代替标记,代替标记也被保留。
标记含义
and&&
and_eq&=
bitand&
or||
or_eq|=
or_eq|=
标记含义mutable是什么意思
bitor|
not!
not_eq!=
xor^
xor_eq^=
compl~
三、C++库保留名称
编译器禁⽌使⽤保留给C++库使⽤的名称,如果您使⽤他们,后果将是不确定的。
如果程序包含某个头⽂件,则不应将该头⽂件中定义的宏名⽤作其他⽬的。
⽐如 <climits> 中的 CHAR_BIT
C++语⾔保留了以两个下划线或下划线和⼤写字母打头的名称,还将以单个下划线打头的名称保留⽤作全局变量。⽐如 __gink _Lynx __lynx
C++语⾔保留了在库⽂件中被声明为链接性为外部的名称。
⽐如 <cmath> 中的 tan 函数,其原型为: double tan(double);
则⽤户不能定义:int tan(double);
四、有特殊含义的标识符
C++社区讨厌新增关键字,因为它们可能与现有代码发⽣冲突。
C++11提供了另⼀种避免新增关键字的机制,即使⽤特殊含义的标识符。
这些标识符不是关键字,但可以⽤于语⾔实现。
编译器根据上下⽂来判断他们是常规标识符还是⽤于实现语⾔功能。
int final;                                  // 常规标识符
virtual void unfold(){...} = final;        // 实现语⾔功能
另外,C++还有很多经常出现在程序中,但不被保留的标识符。
头⽂件名库函数名 main
只要不发⽣名称空间冲突,就可将这些标识符⽤于其他⽬的,但是常识告诉您不必且不应这样做!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。