TestQt::TestQt(QWidget *parent)
: QWidget(parent)
{
ui.setupUi(this);
}
単に Qt を使用するのではなく Qt を学習している場合、初期化コンストラクター リストで親クラス QWidget (parent) のコンストラクターを見たときに疑問が生じると思います。以下では、何に使用されるのか、なぜ必要なのかという 2 つの質問に答えます。
まず、これが必要な理由について説明します:
これは非常に簡単に答えられます。その機能は、サブクラス オブジェクトに含まれる親クラスの変数を初期化することです。このコードのように:
#include <iostream>
class A
{
public:
explicit a()
{
c = 1;
b = 2;
}
void getbc()
{
std::cout << c << b;
}
private:
int c;
int b;
};
class B :public A
{
public:
explicit b();
private:
int c;
};
int main()
{
B ad;
ad.getab();
}
B::b():A()
{
}
親クラスのコンストラクターが呼び出されないと変数の値が不明となり、初期化されていない変数を使用すると予期せぬエラーが発生します。
その理由は次のとおりです
実際、qt の親クラスのメンバー変数は、サブクラスの構築初期化パラメーター リストで直接初期化できないため、ここで親クラスのコンストラクターが呼び出されます。親クラス変数を直接初期化できる場合は、親クラスのコンストラクターを使用せずに変数を直接初期化することも可能です。