Qt 사용자 정의 창 클래스, 자체 생성자를 구현할 때 초기화 생성자 목록에서 상위 클래스 생성자를 호출하는 이유는 무엇입니까?

TestQt::TestQt(QWidget *parent)
    : QWidget(parent)
{
    ui.setupUi(this);
}

       단순히 Qt를 사용하지 않고 Qt를 학습하는 경우 초기화 생성자 목록에서 부모 클래스 QWidget(부모)의 생성자를 보면 의문이 생길 것이라고 생각합니다. 다음은 두 가지 질문에 대한 답입니다. 용도는 무엇이며 왜 필요한가요?

       먼저 이것이 필요한 이유에 대해 이야기해 보겠습니다. ​​
       이는 매우 간단하게 대답할 수 있습니다. 그 기능은 하위 클래스 객체에 포함된 상위 클래스 변수를 초기화하는 것입니다. 다음 코드와 같습니다:

#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의 상위 클래스 멤버 변수는 하위 클래스의 생성 초기화 매개변수 목록에서 직접 초기화할 수 없으므로 여기에서 상위 클래스 생성자가 호출됩니다. 부모 클래스 변수를 직접 초기화하는 것이 가능하다면, 부모 클래스 생성자 없이 변수를 직접 초기화하는 것도 가능하다.

추천

출처blog.csdn.net/qq_51710331/article/details/130535629