在C++ 11中都添加了override specifier和final specifier。他們從加入到C++ 11如constexpr和decltype其他符不同,因爲它們不keywords等都是可供使用的標識符:爲什麼重寫和最終標識符具有特殊含義而不是保留關鍵字?
int main()
{
int override = 0 ; // Ok
int final = 0 ; // Ok
//int constexpr = 0 ; // Error
}
他們被稱爲標識符有特殊的含義 ,其上覆蓋在C++草案標準11部分2.11
[lex.name](重點礦山):
在T中的標識符當在某個上下文中出現 時,能夠3具有特殊含義。當在語法中被引用時,這些標識符被明確地使用而不是使用標識符 語法生產。任何關於給定標識符是否具有特殊含義的含糊不清的問題都解決爲將標記解釋爲常規標識符 。
和表3 - 具有特殊意義同時列出了覆蓋和最後標識符。
爲什麼這兩個符最終會被標識符具有特殊的意義,而不是的關鍵字?
我以爲你[以前建立](https://stackoverflow.com/questions/30311551/is-it-undefined-behavior-to-redefine-an-identifier-with-special-meaning)它是未定義的行爲重新定義具有特殊含義的標識符? – CoryKramer
@CoryKramer這是'#define's。儘管@Shafik可能想澄清這個問題。 –
@CoryKramer是不同的,你不能'#define'或'#undef' –