C++ 日日新

Robert C. Martin 曾說,衡量代碼質量的唯一有效標準:WTF/min。即你 review 代碼時每分鐘內默唸握草的次數。

今天又是塞翁失馬焉知非福的一天。
花了大量的時間來找程序的錯誤,不知不覺中對業務代碼的熟悉上了不止一個臺階。學到了幾個 C++ 的語法知識。

1. enum 類

話不多說,先上個例子:

enum optype {INT, FLOAT, DOUBLE, BOOL};

格式說明:

  • 關鍵字enum——指明其後的標識符是一個枚舉類型的名字。
  • 枚舉常量表——由枚舉常量構成。枚舉常量表列出枚舉類型的所有取值,取值類型與條件表達式相同。

枚舉常量代表該枚舉類型的變量可能取的值,編譯系統爲每個枚舉常量指定一個整數值,默認狀態下,這個整數就是所列舉元素的序號,序號從0開始。 可以在定義枚舉類型時爲部分或全部枚舉常量指定整數值,在指定值之前的枚舉常量仍按默認方式取值,而指定值之後的枚舉常量按依次加1的原則取值。 各枚舉常量的值可以重複。例如:

enum optype {INT, FLOAT, DOUBLE=1, BOOL};
// 枚舉常量 INT=0, FLOAT=1, DOUBLE=1, BOOL=2}

打印enum值

enum optype {INT, FLOAT, DOUBLE=1, BOOL};
optype op;
// op 賦值語句略
std::cout << static_cast<std::underlying_type<optype>::type>(a) << std::endl;

(部分內容參考菜鳥教程)

2. final 關鍵字

今天在代碼中看到了這個關鍵字,就順手查了一下,大概是兩個用途:

  1. 禁止繼承:即 無法繼承含有該關鍵字的類,會導致編譯錯誤。
  2. 禁止重寫:即 將方法標記爲final,這意味着無法再子類中重寫該方法。

3. 析構函數中的冒號

冒號後跟參數列表及值,初始化的順序只跟類中聲明的順序一致

用途大概三類:

  1. 對父類進行初始化
  2. 對類成員進行初始化
  3. 對類的const成員變量進行初始化

讓我感興趣的主要是第三點,因爲:

由於const成員變量的值無法在構造函數內部初始化,因此只能在變量定義時賦值或使用初始化列表賦值。

另有注意事項:

對於2、3中的應用場景,有以下兩點說明:
1、構造函數列表初始化執行順序與成員變量在類中聲明順序相同,與初始化列表中語句書寫先後無關。
2、相對於在構造函數中賦值,初始化列表執行效率更高。

摘自:https://blog.csdn.net/lusirking/article/details/83988421

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章