C 中explicit關鍵字的作用和用法

2021-10-08 16:58:27 字數 885 閱讀 1656

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

explicit使用注意事項:

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

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

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

未加explicit時的隱式型別轉換

class circle  

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

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

private:

double r;

int x;

int y;

};

int main()

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

class circle  

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

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

private:

double r;

int x;

int y;

};

int main()

c 中explicit關鍵字

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

c 中的explicit關鍵字

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

c 中的explicit關鍵字

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