了解成员初始化列表

时间:2012-12-30 20:37:25

标签: c++ qt class

这是Qt mainwindow.cpp中的自动生成的功能代码。

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{

}

这会是同一件事吗?

MainWindow::MainWindow(QWidget *parent)
{
    QMainWindow = parent;
    ui = new Ui::MainWindow;
}

1 个答案:

答案 0 :(得分:5)

没有。我相信QMainWindow是一个基类,所以QMainWindow=parent根本不是替代品。至于ui任务。在第一种情况下,它将使用new Ui::MainWindow进行初始化,而在第二种情况下,它将在初始化后进行分配。在复杂对象的情况下,它可能会导致显着的性能损失,也可能无法在构造字符串之后正确初始化对象。