我有一个使用此表单声明的类
MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
...
}
我想用这个表格重构它:
class MainWindow : QMainWindow, ui
{
MainWindow(QWidget *parent)
{
...
}
}
但我删除了第一种形式的参数。这些参数意味着什么?
如何将它们保留在第二种形式?请解释我的第一个语法(或指向教程)。我不理解带参数的继承。
编辑:
我现在理解了这个问题,这个类是在一个单独的.h文件中初始化的,我最初看不到它。我想:在方法定义之后是继承运算符,而它是成员初始化运算符。
答案 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?以获取有关第一种语法的说明。