c 中explicit關鍵字的使用

2021-07-09 09:46:08 字數 1041 閱讀 3886

explicit作用:

在c++中,explicit關鍵字用來修飾類的建構函式,被修飾的建構函式的類,不能發生相應的隱式型別轉換,只能以顯示的方式進行型別轉換。

explicit使用注意事項:

*explicit 關鍵字只能用於類內部的建構函式宣告上。

*explicit 關鍵字作用於單個引數的建構函式。

* 在c++中,explicit關鍵字用來修飾類的建構函式,被修飾的建構函式的類,不能發生相應的隱式型別轉換

例子:未加explicit時的隱式型別轉換

1. class circle  

2.  

5.     circle(int x, int y = 0) : x(x), y(y) {}  

6.     circle(const circle& c) : r(c.r), x(c.x), y(c.y) {}  

7. private:  

8.     double r;  

9.     int    x;  

10.     int    y;  

11. };  

12.   

13. int _tmain(int argc, _tchar* argv)  

14.  

加了explicit關鍵字後,可防止以上隱式型別轉換發生

1. class circle  

2.  

5.     explicit circle(int x, int y = 0) : x(x), y(y) {}  

6.     explicit circle(const circle& c) : r(c.r), x(c.x), y(c.y) {}  

7. private:  

8.     double r;  

9.     int    x;  

10.     int    y;  

11. };  

12.   

13. int _tmain(int argc, _tchar* argv)  

14.  

c 中explicit關鍵字

c 中的explicit關鍵字用來修飾類的建構函式,表明該建構函式是顯式的。既然有 顯式 那麼必然就有 隱式 那麼什麼是顯示而什麼又是隱式的呢?按照預設規定,只有乙個引數的建構函式也定義了乙個隱式轉換,將該建構函式對應資料型別的資料轉換為該類物件,如下面所示 include using namesp...

c 中的explicit關鍵字

c 中的explicit關鍵字 c 中的explicit關鍵字用來修飾類的建構函式,表明該建構函式是顯式的,既然有 顯式 那麼必然就有 隱式 那麼什麼是顯示而什麼又是隱式的呢?如果c 類的建構函式有乙個引數,那麼在編譯的時候就會有乙個預設的轉換操作 將該建構函式對應資料型別的資料轉換為該類物件,如下...

c 中的explicit關鍵字

c 中的explicit關鍵字用來修飾類的建構函式,表明該建構函式是顯式的,既然有 顯式 那麼必然就有 隱式 那麼什麼是顯示而什麼又是隱式的呢?如果c 類的建構函式有乙個引數,那麼在編譯的時候就會有乙個預設的轉換操作 將該建構函式對應資料型別的資料轉換為該類物件,如下面所示 class myclas...