天天看點

C++幫助手冊之基本概念 (3)名字與辨別符

辨別符

辨別符是一個由數字、下劃線、大小寫拉丁字母和大多數Unicode字元組成的任意長度的序列。有效的辨別符必須以一個非數字字元開頭。辨別符區分大小寫,而且每一個字元都是起作用的。

在聲明中:

可以用辨別符來命名對象、引用、函數、枚舉項、類型、類成員、命名空間、模闆、模闆特化、形參包、goto标号,以及其他實體,但是有以下的類外:

  • 關鍵詞辨別符不能用于其他目的:
  • 關鍵詞隻有在屬性記号中可做他用,比如[[private]]是一個合法的屬性,從C++11開始。
  • 作為特定運算符與标點符的代用不能用于其他目的
  • 其中任何位置帶有雙下劃線的辨別符都是被保留的
  • 以一個下劃線跟着大寫字母開頭的辨別符是被保留的
  • 以一個下劃線開頭的辨別符在全局命名空間中是被保留的

    被保留的意思是:标準庫的頭檔案可能#define或者聲明這樣的辨別符以便其内部使用,編譯器可能會預先設定這種非标準的辨別符,而且名字重置算法可能會假定某些這樣的辨別符是沒有被使用的,如果程式員使用了這樣的辨別符的話,其行為是未定義的。

僵屍辨別符:

某些辨別符隻存在于以往的C++标準,換而言之,他們已經被移除。但是在特定語境中,他們為相容早期的标準而被保留,如果不保留,将會引起多少之前的代碼引發錯誤。

C++幫助手冊之基本概念 (3)名字與辨別符

在表達式中

命名某個變量、函數、概念的特化(C++20起)或者枚舉的辨別符可以作為表達式使用,僅由這個表達式組成的結果,是該辨別符所命名的實體。如果該辨別符命名的是某個函數,變量、模闆形參對象或者資料成員,則表達式的值類型是左值,否則是純右值。

繼續閱讀