1. C++中的explicit函數
C++提供了關鍵字explicit,能夠阻止不該該容許的通過轉換構造函數進行的隱式轉換的發生。聲明爲explicit的構造函數不能在隱式轉換中使用。spa
C++中, 一個參數的構造函數(或者除了第一個參數外其他參數都有默認值的多參構造函數), 承擔了兩個角色。 1 是個構造器 ,2 是個默認且隱含的類型轉換操做符。code
1 class Test1 2 { 3 public: 4 Test1(int n) 5 { 6 num=n; 7 }//普通構造函數 8 private: 9 int num; 10 }; 11 class Test2 12 { 13 public: 14 explicit Test2(int n) 15 { 16 num=n; 17 }//explicit(顯式)構造函數 18 private: 19 int num; 20 }; 21 int main() 22 { 23 Test1 t1=12;//隱式調用其構造函數,成功 24 Test2 t2=12;//編譯錯誤,不能隱式調用其構造函數 25 Test2 t2(12);//顯式調用成功 26 return 0; 27 }