explicit關鍵字關閉隱式型別轉換

2021-09-28 11:42:48 字數 403 閱讀 1770

explicit student(const std::string & n) 

: name(a),scores(n){}

explicit student(int n):name("nully").scores(n){}

student doh("hommm",10); doh = 5;
如果鍵入的是doh,而不是doh[0],省略了關鍵字explicit,將使用構造函式呼叫student(5),將5轉換為乙個student臨時變數,並使用「nully」來設定name的值。因此賦值操作將使用臨時變數來替換原先的doh值,使用explicic之後,編譯器將認為上述的賦值運算操作是錯誤的。

注意:explicit關鍵字只允許出現在類內的建構函式宣告處

隱式轉換與explicit關鍵字

class person person const int age int main 上述 能夠正常執行。class person person const int age person const int age,int b 0 int main 上述 不能正常執行,生成可執行程式時,會報錯 無法...

explicit(顯式)關鍵字

struct a operator bool const struct b explicit operator bool const void doa a a void dob b b int main ok 直接列表初始化 a a4 ok 複製列表初始化 a a5 a 1 ok 允許 static...

C 中的explicit關鍵字 抑制隱式轉換

在c 程式中很少有人去使用explicit關鍵字,不可否認,在平時的實踐中確實很少能用的上。再說c 的功能強大,往往乙個問題可以利用好幾種c 特性去解決。但稍微留心一下就會發現現有的mfc庫或者c 標準庫中的相關類宣告中explicit出現的頻率是很高的。了解explicit關鍵字的功能及其使用對於...