显式构造函数及其具有(默认?)值的定义

explicit constructors and their definition with (default?) values

本文关键字:默认 定义 构造函数      更新时间:2023-10-16

可能的重复项:
构造函数中这种奇怪的冒号成员语法是什么?

我需要快速回答以下问题。它是关于一个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*作为参数的基类构造函数来构造对象。