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

时间:2012-05-03 09:33:17

标签: c++ qt class explicit

  

可能重复:
  What is this weird colon-member syntax in the constructor?

我需要快速回答以下问题。它是关于一个C ++类(一个QT-derivet类,但我认为这在这里并不重要)。

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

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)的含义是什么意思?是某种默认初始化?这与构造函数是显式的这一事实有关(我对这是什么意思,但没有详细的意思)?

拜托,我知道这个问题可能非常简单,而且我不知道从哪里开始。

谢谢。

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

1 个答案:

答案 0 :(得分:2)

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

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

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