explicit用來防止由建構函式定義的隱式轉換,比如:
class base base=10;
即base類只有乙個int型別的變數,explicit使用了以後,就不允許這樣寫。
被宣告為explicit的建構函式通常比非explicit的建構函式更受歡迎,因為它們禁止編譯器執行非預期的型別轉換。
volatile變數是隨時可能發生變化的,它告訴編譯器,與volatile變數有關的運算,不要進行任何優化,每次讀取volatile變數時都重新從記憶體讀取,不會有臨時暫存器來存放變數的值。
volatile可以適用於基礎型別,例如:
int,char,long…
也適用於c的結構和c++的類。當對結構或者類物件使用volatile修飾的時候,結構或者類的所有成員都會被視為volatile.
一般的在多執行緒環境中,涉及到某些變數同步的操作時,使用volatile會更好;
mutable用於類的非靜態和非常量資料成員,一般類的成員函式被宣告為const,就表示不會修改類的資料成員,但如果要在常成員函式中修改類的非靜態和非常量資料成員,則可以使用mutable修飾該資料成員,如下:
class
demo
private
:int m_ncount;
};
編譯會報錯:test.cpp:13: 錯誤:increment of data-member 『demo::m_ncount』 in read-only structure,但如果改為如下**:
class
demo
private
:mutable
int m_ncount;
};
則編譯通過。 C 不常見關鍵字
c 中的explicit關鍵字用來修飾類的建構函式,表明該建構函式是顯式的,既然有 顯式 那麼必然就有 隱式 那麼什麼是顯示而什麼又是隱式的呢?如果c 類的建構函式有乙個引數,那麼在編譯的時候就會有乙個預設的轉換操作 將該建構函式對應資料型別的資料轉換為該類物件,如下面所示 class myclas...
關鍵字 一些關鍵字用法總結
register 用register宣告的變數稱暫存器變數,在可能的情況下會直接存放在機器的暫存器中 但對32位編譯器不起作用,當global optimizations 全域性優化 開的時候,它會做出選擇是否放在自己的暫存器中 不過其它與register關鍵字有關的其它符號都對32位編譯器有效。c...
c語言的一些關鍵字
1.switch case case後面只能是整型或者字元型的常量或者常量表示式,並且不要忘記了加default switch b case 3 cout a 2.return 關鍵字 return用於終止乙個函式並返回其後面跟著的值,若果是表示式一般加上括號,規範性。但是return 不可以返回指...