Explicit關鍵字的作用

 explicit,和構造函數一起使用. 
explicit   constructor指明構造函數只能顯示使用,目的是爲了防止不必要的隱式轉化. 
舉個例子: 
    有這樣一段代碼: 

class   A 
{ 
      public: 
          A(int); 
      private: 
          int   num; 
}; 

int   Test(const   A&)   //   一個應用函數 
{ 
      ... 
} 

Test(2);   //   正確 
過程是這樣的:   編譯器知道傳的值是int而函數需要的是A類型,但它也同時知道調用A的構造函數將int轉換成一個合適的A,所以纔有上面成功的調用.換句話說,編譯器處理這個調用時的情形類似下面這樣: 
    const   A   temp(2);             //   從2產生一個臨時A對象 
    Test(temp);           //   調用函數 


如果代碼寫成如下樣子: 
class   A 
{ 
      public: 
        explicit   A(int); 
      private: 
          int   num; 
}; 

int   Test(const   A&)   //   一個應用函數 
{ 
      ... 
} 

Test(2);   //   失敗,不能通過隱式類型轉換將int類型變量構造成成A類型變量 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章