带有重载构造函数的C ++类重新实现

时间:2013-06-03 12:29:47

标签: c++ class inheritance constructor overloading

为了对Qt框架中的事件做出反应,我重新实现了一个Qt类(QLabel),即它的默认构造函数只有一个参数。由于这给出了错误,我还使用另一个参数重新实现了构造函数。现在它有效。

类别:

class myLabel : public QLabel
{
    Q_OBJECT
public:
    explicit myLabel(QWidget *parent = 0);
    explicit myLabel(QString x, QWidget *parent = 0);
    void mousePressEvent( QMouseEvent* e );
signals:
    void clicked();
};

构造

myLabel::myLabel(QWidget *parent) : QLabel(parent)
{
}
myLabel::myLabel(QString x, QWidget *parent) : QLabel(parent)
{
    setText(x);
}

我的(初学者)问题是:为什么不运行基类的相应构造函数,因为[基类的所有其他方法(例如我可以使用setText()而不重新实现它)]? 极端:为什么我需要重新实现构造函数,尽管它不包含任何代码?

编辑: 在发布之前,我不确定要搜索什么,但这个问题基本上已在https://stackoverflow.com/a/347362/1619432

中得到解答

编辑: 正如bartimar指出的那样,构造函数不是空的,因为它调用了基类的构造函数。 这显然可以通过传递相应的参数来完成:

myLabel::myLabel( const QString& x, QWidget* parent, Qt::WindowFlags f ) : 
    QLabel( x, parent, f ) {}

0 个答案:

没有答案