类重构:使用参数继承

时间:2012-09-05 16:19:51

标签: c++ qt

我有一个使用此表单声明的类

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

我想用这个表格重构它:

class MainWindow : QMainWindow, ui 
{
    MainWindow(QWidget *parent)
    {
        ...
    }
}

但我删除了第一种形式的参数。这些参数意味着什么?

如何将它们保留在第二种形式?请解释我的第一个语法(或指向教程)。我不理解带参数的继承。

编辑:

我现在理解了这个问题,这个类是在一个单独的.h文件中初始化的,我最初看不到它。我想:在方法定义之后是继承运算符,而它是成员初始化运算符。

2 个答案:

答案 0 :(得分:1)

这是构造函数的实现,调用基类构造函数并在初始化列表中初始化数据成员:

MainWindow(QWidget *parent) :
        QMainWindow(parent),   // call base class constructor
        ui(new Ui::MainWindow) // initialize data member ui
{
    ...
}

该类很可能继承自QMainWindow并且有一个名为Ui::MainWindow*的{​​{1}}数据成员。你的第二个代码片段似乎是一个不正确的尝试来声明一个类。没有"继承参数"因此,你不能做你所要求的。

答案 1 :(得分:0)

首先是constructor initializer-list initialization,这个例子很好。第二个例子永远不会编译,因为它的语法错误。请查看此示例In this specific case, is there a difference between using a member initializer list and assigning values in a constructor?以获取有关第一种语法的说明。