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...