类重构:带参数的继承
Class refactoring : inheritance with parameter
我有一个使用以下形式声明的类
MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
...
}
我想用这样的形式重构它:
class MainWindow : QMainWindow, ui
{
MainWindow(QWidget *parent)
{
...
}
}
但是我去掉了第一种形式的参数。这个参数是什么意思?
如何让他们保持第二种状态?请向我解释第一个语法(或指向教程)。我不理解带参数的继承。
编辑:
我现在明白了这个问题,这个类是在一个单独的.h文件中初始化的,我第一眼没有看到。我想:之后的方法定义是继承运算符,而它是成员初始化运算符。
这是构造函数的实现,调用基类构造函数并初始化初始化列表中的数据成员:
MainWindow(QWidget *parent) :
QMainWindow(parent), // call base class constructor
ui(new Ui::MainWindow) // initialize data member ui
{
...
}
该类很可能继承自QMainWindow
,并具有一个名为ui
的Ui::MainWindow*
数据成员。您的第二个代码片段似乎是一次错误的声明类的尝试。不存在这样的"带参数的继承",因此您不能按要求执行。
第一个是constructor
和initializer-list initialization
,这个例子很好。第二个例子永远不会编译,因为它是错误的语法。例如,在这个特定的例子中,使用成员初始值设定项列表和在构造函数中赋值之间有区别吗?有关第一语法的解释。
相关文章:
- 为什么C++构造函数在继承中需要默认参数?
- C++接口继承不同的参数方法
- 如何在继承层次结构中调用具有默认参数的构造函数?
- 模板的继承参数设置
- 使用多参数包可变参数模板继承类
- 使用继承初始化C++中的参数
- 可变参数模板和具有继承的默认值
- 作为模板参数的成员函数指针在继承的成员函数上失败,如何以及为什么?
- 从作为模板参数传递给构造函数的类继承,或者从它们继承
- 在编译时检查未实例化的类模板是否继承自其第一个模板参数
- 继承基构造函数,基类是模板参数 (MSVC)
- C++ 函数的继承,传入参数
- C++ 模板元编程:从模板模板参数继承
- 类成员在继承的情况下用作模板参数
- C++中模板参数的类继承
- 继承专业化的模板参数推导
- 继承类模板的参数化构造函数
- 如果存在具有不同参数的继承成员,为什么对 C++ 结构函数的调用不明确?
- 具有可变模板的递归继承和继承参数问题
- 函数是否可以继承参数