вопрос конструктора c ++ - PullRequest
2 голосов
/ 12 марта 2011
#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 здесь ??

Ответы [ 3 ]

3 голосов
/ 12 марта 2011

Он называется Параметр по умолчанию

По сути, вы говорите, что если вы не передадите другое значение, функция (или конструктор в этом случае) будет вызываться с родителем как 0.

Когда вы имели бы MyWidget(QWidget *parent); в качестве конструктора, вы должны были бы назвать его как MyWidget widget(0);

1 голос
/ 12 марта 2011

Вам не нужно ставить ноль там. C ++ позволяет вам поставить значение по умолчанию для параметра. В этом случае параметр parent будет по умолчанию равен 0, если конструктор вызывается без указания аргумента.

0 голосов
/ 12 марта 2011

Не нужно помещать это туда, но это значение по умолчанию. Если вы не передадите какое-либо значение в конструктор, оно будет принимать значение «0». В некоторых случаях это немного облегчает работу программиста.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...