C++ 显式构造函数及其(默认?)值定义

C++ 显式构造函数及其(默认?)值定义,c++,qt,class,explicit,C++,Qt,Class,Explicit,可能重复: 我需要一个关于以下问题的快速答案。它是关于C++类(Qt派生类),但我认为这里并不重要。 在头文件中,我有以下声明: class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); 在源文件中,我有以下定义: MainWindow::MainWindow(QWidget *parent) :

可能重复:

我需要一个关于以下问题的快速答案。它是关于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++中显示我的NOTABY,是:

构造函数定义中的
:QMainWindow(父项)
是什么意思?是某种默认初始化吗?这与构造函数是显式的这一事实有关吗(我已经掌握了它的真正含义,但没有详细的说明)

拜托,我知道这个问题可能很简单,我只是不知道从哪里开始

多谢各位


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

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

它与构造函数是显式的无关。在这种情况下,显式意味着
QWidget*
不能隐式转换为
MainWindow
对象


:QMainWindow(parent)
简单地说,应该调用以
QWidget*
为参数的基类构造函数来构造对象。

非常感谢您的快速回答。C++中没有类似的Sub()用于直接调用派生类构造函数中的基类构造函数吗?@ AxeOTE,这相当于调用<代码> SUBER()/<代码>。不能在C++中调用同一个对象的基础构造函数,除了这个之外,不用了。事实上,我发现答案在这里得到了证实:在这里:。我只是不知道该找什么。你回答得很好。从这个例子中:我知道我可以在我的构造函数中做一些类似的事情:this->qmainfown::qmainfown(parent);也就是说,就像调用super()。有人能确认这是正确的吗?是的,显然,这个->QMainWindow::QMainWindow(父窗口);不工作,错误为:“错误:无法直接调用构造函数'QMainWindow::QMainWindow'”是的,您是对的。几乎一样,只是在这个问题上,定义和声明重新结合了起来。对于一个像我一样的C++新手(我只知道C.…),看到了连续的“:”和“:”我失去了。谢谢你指出了另一个问题。没问题:)你知道这个构造被称为C++中的成员初始化列表。