您可能知道,Qt Creator中的类是作为class.h和class.cpp文件的项目的一部分。假设我们有两个类A(ah,a.cpp)和B(bh,b.cpp),并且B继承了A。在使用B的构造函数时如何使用A的构造函数?
问问题
4466 次
2 回答
5
构造 B 时会自动调用 A 的构造函数。
如果您需要将参数传递给 A 的构造函数以使其正常工作,请在 B 的构造函数中显式调用它:
B::B()
:A(Blah)
{
}
当 A 是 QObject 并且您希望所有权正确发生时,这很常见,您将在 B 的构造函数中传递父指针并将其传递给 A:
B::B(QObject* parent_)
:A(parent_)
{
}
这与 Qt 无关,是一个纯 C++ 概念。
于 2012-12-10T04:26:23.900 回答
1
您将拥有以下文件:
啊:
#ifndef A_H
#define A_H
class A
{
public:
A();
};
#endif // A_H
a.cpp:
#include "a.h"
#include <QDebug>
A::A()
{
qDebug() << "A()";
}
: _
#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()";
}
主.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()
于 2012-11-30T14:27:54.687 回答