C 中explicit建構函式的理解

2021-09-28 12:26:32 字數 536 閱讀 6837

普通的建構函式可以被顯式呼叫和隱試呼叫,但是explicit的建構函式只能被顯式的呼叫,不能被隱試的呼叫。**示例如下:

class  test0

};class test1

};int main(int argc, char *ar**)

分析如下** 

#include

#include

using namespace std;

class test1

explicit test1(short) :type("short"){}//2.由於這裡使用了explicit,所以不能夠被隱試轉換。於是42自動轉換為int型,檢查int的建構函式能否被隱試轉換。

test1(int) :type("int"){}//3.沒有被宣告為explicit顯示呼叫,因此呼叫此建構函式造出乙個臨時物件。最終輸出結果就是int

};void show(const test1& n)

int main(int argc, char *ar**)

C 中的explicit建構函式

c explicit建構函式 explicit按字面意思是明確的,顯式的。在c 類中只要定義的建構函式編譯器就不會幫你生成預設建構函式。按照預設規定,只有乙個引數的建構函式也定義了乙個隱式轉換,將該建構函式對應資料型別的資料轉換為該類物件,如下面所示 class string string str ...

explicit建構函式

按照預設規定,只有乙個引數的建構函式也定義了乙個隱式轉換,將該建構函式對應資料型別的資料轉換為該類物件,如下面所示 class string string s1 hello ok 隱式轉換,等價於string s1 string hello 但是有的時候可能會不需要這種隱式轉換,如下 class s...

explicit建構函式

在閱讀slicer原始碼時,遇見explicit修飾的建構函式,比較迷惑 explicit qslicerigsreadermodule qobject parent 0 下面就解釋這個問題。按照預設規定,只有乙個引數的建構函式也定義了乙個隱式轉換,將該建構函式對應資料型別的資料轉換為該類物件,如下...