这个问题已经在这里有了答案:




已关闭8年。






我需要快速回答以下问题。它是关于C++类(QT派生类,但我认为在此并不重要)。

在头文件中,我有以下声明:

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

而在源文件中,我具有以下定义:
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent)
{
    QWidget * central = new QWidget(this);

这个问题,也许很清楚地表明我对C++的不满,是:

构造函数的定义中的: QMainWindow(parent)是什么意思?是某种默认初始化吗?这是否与构造函数是显式的事实有关(我对这意味着什么有些了解,但没有详细说明)?

拜托,我知道这个问题可能非常简单,新手,我只是不知道从哪里开始。

谢谢。

编辑:谢谢所有回答的人。

最佳答案

它从基类中调用该特定的构造函数。

它与explicit的构造函数无关。在这种情况下,显式表示不能将QWidget*隐式转换为MainWindow对象。
:QMainWindow(parent)只是说应调用以QWidget*作为参数的基类构造函数来构造对象。

10-06 13:50
查看更多