c++ explicit的作用

C++中的關鍵字explicit主要是用來修飾類的構造函數,被修飾的構造函數的類,不能發生相應的隱式類型轉換,只能以顯示的方式進行類型轉換。類構造函數默認情況下聲明爲隱式的即implicit。

explicit關鍵字只能用於類內部的構造函數聲明上,而不能用在類外部的函數定義(函數實現)上,它的作用是不能進行隱式轉換;explicit關鍵字作用於單個參數的構造函數,如果構造函數有多個參數,但是從第二個參數開始,如果各參數均有默認賦值,也可以應用explicit關鍵字。

 當構造函數只有一個參數時,會進行自動隱式轉換,當構造函數參數個數超過或等於兩個時自動取消隱式轉換,當只有一個必須輸入的參數,其餘的爲有默認值的參數時使用explicit也起作用。

 一般只將有單個參數的構造函數聲明爲explicit,而拷貝構造函數不要聲明爲explicit。

explicit關鍵字只能對用戶自己定義的對象起作用,不對默認構造函數起作用。此關鍵只能夠修飾構造函數。無參數的構造函數和多參數的構造函數總是顯示調用,這種情況在構造函數前加explicit無意義。

當不希望進行自動類型轉換時用explicit,標準庫的許多構造函數都是explicit的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章