2011-03-12 79 views
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這裏?C++構造問題

回答

3

這就是所謂的Default parameter

基本上你是說,除非你通過其他值,函數(或構造在這種情況下)將與父被稱爲0

當你有MyWidget(QWidget *parent);作爲構造函數,你不得不稱之爲像MyWidget widget(0);

+0

謝謝,我明白了。真的很好澄清。 – 2011-03-12 21:09:07

0

不需要把它放在那裏,但它是一個默認值。如果你沒有給構造函數傳遞任何值,它會將'0'作爲值。在某些情況下,程序員可以讓事情變得更簡單。

1

您不必在那裏放零。 C++允許你爲參數設置默認值。在這種情況下,如果在未指定參數的情況下調用構造函數,參數parent將默認爲0。