所有單引數的建構函式都必須是explicit的,這是為了防止後台悄悄進行的型別轉換,舉個例子如下:
定義乙個類:
class intcell
private:
int intvalue;
};對類做如下例項化:
intcell obj;
obj=37;
如果不加上explicit關鍵字的話,這將順利通過編譯,原因是c++通過隱式型別轉換,構造了乙個臨時物件,臨時物件的intvalue值是37,
然後再把這個臨時物件賦給obj;
如果加上explicit 那麼這種情況編譯器就匹配不了=兩邊的型別了 ,就會編譯不通過。
關於explicit關鍵字
今天在看乙個源程式的時候用到了explicit關鍵字。在網上查詢了一下該關鍵字的作用。沒有進行試驗,只是整理了下 1.explicit主要和建構函式一起使用.2.當explicit修飾建構函式的時候,對於呼叫該建構函式進行進行 隱式 轉換的 將不會通過 3.解除explicit的方式,就是使用強制轉...
explicit(顯示)關鍵字
explicit 使用 struct a operator bool const struct b explicit operator bool const void doa a a void dob b b intmain ok 直接列表初始化 a a4 ok 複製列表初始化 a a5 a 1 o...
C 的explicit關鍵字
c 的explicit關鍵字 c 中的explicit關鍵字用來修飾類的建構函式,表明該建構函式是顯式的,既然有 顯式 那麼必然就有 隱式 那麼什麼是顯示而什麼又是隱式的呢?如果c 類的建構函式有乙個引數,那麼在編譯的時候就會有乙個預設的轉換操作 將該建構函式對應資料型別的資料轉換為該類物件,如下面...