【C++】explicit 關鍵字
阿新 • • 發佈:2018-11-19
文章複製連結:
https://baike.baidu.com/item/explicit/4941869?fr=aladdin
explicit建構函式是用來防止隱式轉換的。請看下面的程式碼:
class Test1 { public: Test1(int n) { num=n; }//普通建構函式 private: int num; }; class Test2 { public: explicit Test2(int n) { num=n; }//explicit(顯式)建構函式 private: int num; }; int main() { Test1 t1=12;//隱式呼叫其建構函式,成功 Test2 t2=12;//編譯錯誤,不能隱式呼叫其建構函式 Test2 t2(12);//顯式呼叫成功 return 0; }
Test1的建構函式帶一個int型的引數,程式碼23行會隱式轉換成呼叫Test1的這個建構函式。而Test2的建構函式被宣告為explicit(顯式),這表示不能通過隱式轉換來呼叫這個建構函式,因此程式碼24行會出現編譯錯誤。
普通建構函式能夠被隱式呼叫。而explicit建構函式只能被顯式呼叫。