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 關鍵字
今天在代碼中看到了這個關鍵字,就順手查了一下,大概是兩個用途:
- 禁止繼承:即 無法繼承含有該關鍵字的類,會導致編譯錯誤。
- 禁止重寫:即 將方法標記爲final,這意味着無法再子類中重寫該方法。
3. 析構函數中的冒號
冒號後跟參數列表及值,初始化的順序只跟類中聲明的順序一致。
用途大概三類:
- 對父類進行初始化
- 對類成員進行初始化
- 對類的const成員變量進行初始化
讓我感興趣的主要是第三點,因爲:
由於const成員變量的值無法在構造函數內部初始化,因此只能在變量定義時賦值或使用初始化列表賦值。
另有注意事項:
對於2、3中的應用場景,有以下兩點說明:
1、構造函數列表初始化執行順序與成員變量在類中聲明順序相同,與初始化列表中語句書寫先後無關。
2、相對於在構造函數中賦值,初始化列表執行效率更高。
摘自:https://blog.csdn.net/lusirking/article/details/83988421