關於C 中的explicit關鍵字

2021-08-07 02:33:23 字數 1185 閱讀 5171

關於c++中的explicit關鍵字

在c++中,explicit關鍵字是用來修飾類的建構函式的。含有被該關鍵字修飾過的建構函式的類,

將不能進行隱式型別轉換,型別轉換只能顯式進行。並且需要注意的是該關鍵字僅用於類內的建構函式的宣告上。

例如:

#include class ball

ball(int x=0,int y=0,int z=0): x(x),y(y),z(z){}

ball( ball& b):r(b.getr()),x(b.getx()),y(b.gety()),z(b.getz()){}

~ball(){}

double getr()

int getx()

int gety()

int getz()

private:

double r; // 半徑

int x,y,z; // 球心空間三維座標

};

class ball2 // 使用explicit關鍵字修飾構造

explicit ball2(int x=0,int y=0,int z=0,double r=0.0):x(x),y(y),z(z),r(r){}

explicit ball2( ball& b):r(b.getr()),x(b.getx()),y(b.gety()),z(b.getz()){}

~ball2(){}

double getr()

int getx()

int gety()

int getz()

private:

double r; // 半徑

int x,y,z; // 球心空間三維座標 };

int main(void)

; //這段**是成立的

//這裡含有乙個隱式的轉換

//temp =ball; ball a;

ball b = ; //這裡同樣的也包含了隱式轉換

// ball2就可以避免這種隱式轉換了

ball2 a2;

ball2 b2;

// 還用一種比較容易出現的問題,涉及到之前的元素初始化方式的不統一

// 下面的這段**是非常容易出錯的,這種寫法是錯誤的

//ball2 c = ;

return 0;

}

關於C 中的explicit關鍵字

explicit,和建構函式一起使用.explicit constructor指明建構函式只能顯示使用,目的是為了防止不必要的隱式轉化.舉個例子 有這樣一段 class a int test const a 乙個應用函式 test 2 正確 過程是這樣的 編譯器知道傳的值是int而函式需要的是a型別...

c 中explicit關鍵字

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

c 中的explicit關鍵字

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