2
#include <QApplication>
#include <QFont>
#include <QPushButton>
#include <QWidget>

class MyWidget : public QWidget
{
public:
    MyWidget(QWidget *parent = 0);
};

MyWidget::MyWidget(QWidget *parent)
    : QWidget(parent)
{
    setFixedSize(200, 120);

    QPushButton *quit = new QPushButton(tr("Quit"), this);
    quit->setGeometry(62, 40, 75, 30);
    quit->setFont(QFont("Times", 18, QFont::Bold));

    connect(quit, SIGNAL(clicked()), qApp, SLOT(quit()));
}

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    MyWidget widget;
    widget.show();
    return app.exec();
}

この行の場合: MyWidget(QWidget *parent = 0); なぜ = 0ここに置く必要があるのですか?

4

3 に答える 3

3

これはデフォルトパラメータと呼ばれます

基本的に、別の値を渡さない限り、関数(またはこの場合はコンストラクター)は親を0として呼び出されます。

あなたがMyWidget(QWidget *parent);コンストラクターとして持っていたとき、あなたはそれを次のように呼ばなければならなかったでしょうMyWidget widget(0);

于 2011-03-12T08:37:04.630 に答える
1

そこにゼロを置く必要はありません。C ++では、パラメータのデフォルト値を設定できます。この場合、parent引数を指定せずにコンストラクターを呼び出すと、パラメーターはデフォルトで0になります。

于 2011-03-12T08:38:01.027 に答える
0

そこに置く必要はありませんが、デフォルト値です。コンストラクターに値を渡さない場合、値として「0」を取ります。場合によっては、プログラマーにとっては少し簡単になります。

于 2011-03-12T08:37:04.773 に答える