如何在Qt Creator中使用超类构造函数?

时间:2012-11-30 13:14:34

标签: inheritance constructor qt-creator qt5

您可能知道, Qt Creator 中的课程是 class.h class.cpp 文件的一部分。让我们假设我们有两个类A(a.h,a.cp​​p)和B(b.h,b.cpp),并且B继承A.当使用B的构造函数时,如何使用A的构造函数?

2 个答案:

答案 0 :(得分:5)

构造B时会自动调用构造函数。

如果需要将参数传递给A的构造函数以使其正确工作,请在B的构造函数中显式调用它:

B::B()
 :A(Blah)
{
}

当A是QObject并且您希望所有权内容正确发生时,这将是常见的,您将传递B的构造函数中的父指针并将其传递给A的:

B::B(QObject* parent_)
 :A(parent_)
{
}

这与Qt无关,是纯粹的C ++概念。

答案 1 :(得分:2)

您将拥有以下文件:

<强> A.H

#ifndef A_H
#define A_H

class A
{
public:
    A();
};

#endif // A_H

<强> a.cpp

#include "a.h"
#include <QDebug>

A::A()
{
    qDebug() << "A()";
}

<强> b.h

#ifndef B_H
#define B_H

#include "a.h"

class B : public A
{
public:
    B();
};

#endif // B_H

<强> b.cpp

#include "b.h"
#include <QDebug>

B::B() : A()
{
    qDebug() << "B()";
}

<强>的main.cpp

#include <QCoreApplication>
#include <QDebug>

#include "a.h"
#include "b.h"

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    B ob;

    return a.exec();
}

它会打印出来:

A()
B()