class person
person(const int age)
};int main()
上述**能夠正常執行。
class person
person(const int age)
person(const int age, int b = 0)
};int main()
上述**不能正常執行,生成可執行程式時,會報錯:無法從int轉換到person。
也就是說,編譯器不能進行隱式轉換。因為,編譯器不知道是呼叫person(const int age),還是呼叫person(const int age,int b=0)。
將person(const int age)前加explicit關鍵字修飾:
class person
explicit person(const int age)
person(const int age, int b = 0)};
告知編譯器person(const int age)不進行隱式轉換,則編譯器只能呼叫person(const int age,int b=0),進行隱式轉換。
explicit關鍵字關閉隱式型別轉換
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 省略了關鍵字exp...
explicit 隱式類型別轉換
c 隱式類型別轉換 c primer 中提到 可以用 單個形參來呼叫 的建構函式定義了從形參型別到該類型別的乙個隱式轉換。這裡應該注意的是,可以用單個形參進行呼叫 並不是指建構函式只能有乙個形參,而是它可以有多個形參,但那些形參都是有預設實參的。那麼,什麼是 隱式轉換 呢?上面這句話也說了,是從 建...
隱式類型別轉換以及explicit
先有如下建構函式版本 class sales item sales item std istream is 原本的成員函式same isbn 接收乙個sales item物件作為實參,判斷兩個物件是否對應的是同一本書。但是 string null book 9 99 9999 item.same i...