explicit,和建構函式一起使用.
explicit constructor指明建構函式只能顯示使用,目的是為了防止不必要的隱式轉化.
舉個例子:
有這樣一段**:
class a
; int test(const a&) // 乙個應用函式
test(2); // 正確
過程是這樣的: 編譯器知道傳的值是int而函式需要的是a型別,但它也同時知道呼叫a的建構函式將int轉換成乙個合適的a,所以才有上面成功的呼叫.換句話說,編譯器處理這個呼叫時的情形類似下面這樣:
const a temp(2); // 從2產生乙個臨時a物件
test(temp); // 呼叫函式
如果**寫成如下樣子:
class a
; int test(const a&) // 乙個應用函式
test(2); // 失敗,不能通過隱式型別轉換將int型別變數構造成成a型別變數
關於C 中的explicit關鍵字
關於c 中的explicit關鍵字 在c 中,explicit關鍵字是用來修飾類的建構函式的。含有被該關鍵字修飾過的建構函式的類,將不能進行隱式型別轉換,型別轉換只能顯式進行。並且需要注意的是該關鍵字僅用於類內的建構函式的宣告上。例如 include class ball ball int x 0,...
c 中explicit關鍵字
c 中的explicit關鍵字用來修飾類的建構函式,表明該建構函式是顯式的。既然有 顯式 那麼必然就有 隱式 那麼什麼是顯示而什麼又是隱式的呢?按照預設規定,只有乙個引數的建構函式也定義了乙個隱式轉換,將該建構函式對應資料型別的資料轉換為該類物件,如下面所示 include using namesp...
c 中的explicit關鍵字
c 中的explicit關鍵字 c 中的explicit關鍵字用來修飾類的建構函式,表明該建構函式是顯式的,既然有 顯式 那麼必然就有 隱式 那麼什麼是顯示而什麼又是隱式的呢?如果c 類的建構函式有乙個引數,那麼在編譯的時候就會有乙個預設的轉換操作 將該建構函式對應資料型別的資料轉換為該類物件,如下...