这个问题已经在这里有了答案:
已关闭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*
作为参数的基类构造函数来构造对象。