C++ 构造函数问题

标签 c++ constructor default-parameters

#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??

最佳答案

它被称为Default parameter

基本上你是说,除非你传递另一个值,否则函数(或本例中的构造函数)将被调用,父级为 0。

当您使用 MyWidget(QWidget *parent); 作为构造函数时,您必须像 MyWidget widget(0); 那样调用它

关于C++ 构造函数问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5281517/

相关文章:

java - 是否有一个使用长度以外的参数的数组构造函数?

c++ - 强制使用默认参数

javascript - 为 JavaScript 函数设置默认参数值

c++ - 无法释放从 iplimage 创建的 mat 图像

c++ - C++ 中基类和派生类对象的树结构

c++ - Growl Notification - 不会使用框架 (Mist) 触发通知

c++ - 为什么 move 构造函数只被调用一次?

java - 错误: Constructor cannot be applied to given types

javascript - 在 ES6 中使用默认值和扩展语法

c++ - 套接字 - 发送和接收