Qt 中C 的explicit 關鍵字

2022-09-29 15:42:18 字數 674 閱讀 9708

在qt中,我們經常都看到這樣的函式宣告:

public:

explicit myaction(qobject *parent = nullptr);

有這個explicit關鍵字,那麼它的作用是什麼呢?

關鍵字explicit可以禁止「單引數建構函式」被用於自動型別轉換,宣告為explicit的建構函式不能在隱式轉換中使用, c++中, 乙個引數的建構函式(或者除了第乙個引數外其餘引數都有預設值的多參建構函式), 承擔了兩個角色。一是個構造器,二是個預設且隱含的型別轉換操作符。通過**感受一下:

#include 

using

namespace

std;

class test

void show()

private:

int m_data;

};class test2

void show2()

private:

int m_data2;

};int main(void)

輸出結果是:

m_data = 2

m_data2 = 5

c 中explicit關鍵字

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

c 中的explicit關鍵字

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

c 中的explicit關鍵字

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