Qt C 中的關鍵字explicit

2021-08-19 23:48:10 字數 601 閱讀 6496

最近在複習qt,準備做專案了,qt creator 預設生成的** explicit dialog(qwidget *parent = 0)中,有這麼乙個關鍵字

explicit 

,用來修飾建構函式。以前在windows下寫程式的時候,基本上沒有碰到這個關鍵字,那麼這個關鍵字是做什麼用的呢?

關鍵字 explicit 可以禁止「單引數建構函式」被用於自動型別轉換。光看這一句似乎不太容易明白,下面,舉個簡單地例子。

#include

using namespace std;

class test

void show()

private:

int m_data;

};void main(void)

編譯能夠通過,執行結果:m_data = 2。

為什麼會這樣呢?原來c++通過隱式轉換,構造了乙個臨時物件test(2),將它賦給了t(這裡呼叫了預設的建構函式,而不是過載的「=」,因為這是在物件建立的時候)。那麼,如果給建構函式加上關鍵字 explicit ,建構函式變成了 explicit test(int a),再次編譯,編譯器就會報錯。這時,就只能顯式地使用建構函式了test t = test(2) 。

Qt C 中的關鍵字explicit

最近在複習qt,準備做專案了,qt creator 預設生成的 explicit dialog qwidget parent 0 中,有這麼乙個關鍵字 explicit 用來修飾建構函式。以前在windows下寫程式的時候,基本上沒有碰到這個關鍵字,那麼這個關鍵字是做什麼用的呢?關鍵字 explic...

Qt C 中的關鍵字explicit

最近在複習qt,準備做專案了,qt creator 預設生成的 explicit dialog qwidget parent 0 中,有這麼乙個關鍵字 explicit 用來修飾建構函式。以前在windows下寫程式的時候,基本上沒有碰到這個關鍵字,那麼這個關鍵字是做什麼用的呢?關鍵字 explic...

Qt C 中的關鍵字explicit

最近在複習qt,準備做專案了,qt creator 預設生成的 explicit dialog qwidget parent 0 中,有這麼乙個關鍵字 explicit 用來修飾建構函式。以前在windows下寫程式的時候,基本上沒有碰到這個關鍵字,那麼這個關鍵字是做什麼用的呢?關鍵字 explic...