Qt学习之路【2】:调用父类构造函数
2015-08-29 09:21
127 查看
阅读Qt代码的时候经常遇见这样一类代码:
我们都知道在C++中,如果两个类A与B之间是继承关系,则A与B之间可以用“:”连接,但是类是没有参数的。因此QMainWindow(parent)是不能理解为类的。
如果不是类,那么最有可能的就是构造函数。现在假设QMainWindow(parent)为某类的构造函数,那么这个构造函数在这句代码中起到了什么作用呢?该怎么去理解这句代码?这个问题是我第一次碰到这句代码时在脑袋中产生的疑问(这属于C++的知识)。
C++中,通过继承可以使类形成一种层次关系。在层次关系的根部的称之为基类,它负责定义在层次关系中所有类共同的成员;直接或者间接的从基类继承而来的称作派生类,它负责定义各自的特有成员。
在创建对象时,都会使用构造函数初始化对象的数据成员。
现在有一个派生类A,它继承基类B。现在问题是:使用A类创建一个对象后,怎样初始化它从类B中继承过来的数据成员?(父类的构造函数是不能被继承的)
这个问题就是使用上面的那行代码来解决的。首先QMainWindow是父类而QPlayer是子类,他们是继承关系;QPlayer(QWidget *parent)是类QPlayer的构造函数,QMainwindow(parent)时类QMainwindow的构造函数。类Qplayer在实现构造函数时,要初始化基类QMainwindow的数据成员但是因为无法继承基类的构造函数,所以才用这种方式初始化基类的书籍成员。
说一下,这种代码的具体格式
派生类::派生类构造函数(总参数列表):基类构造函数(参数列表)
{
派生类中的数据成员初始化;
}
QPlayer::QPlayer(QWidget *parent) :QMainWindow(parent)QPlayer是一个类,“::”后面跟着的是一个构造函数。但是这个构造函数之后的“:”后面的QMainWindow(parent)该怎样去理解呢?
我们都知道在C++中,如果两个类A与B之间是继承关系,则A与B之间可以用“:”连接,但是类是没有参数的。因此QMainWindow(parent)是不能理解为类的。
如果不是类,那么最有可能的就是构造函数。现在假设QMainWindow(parent)为某类的构造函数,那么这个构造函数在这句代码中起到了什么作用呢?该怎么去理解这句代码?这个问题是我第一次碰到这句代码时在脑袋中产生的疑问(这属于C++的知识)。
C++中,通过继承可以使类形成一种层次关系。在层次关系的根部的称之为基类,它负责定义在层次关系中所有类共同的成员;直接或者间接的从基类继承而来的称作派生类,它负责定义各自的特有成员。
在创建对象时,都会使用构造函数初始化对象的数据成员。
现在有一个派生类A,它继承基类B。现在问题是:使用A类创建一个对象后,怎样初始化它从类B中继承过来的数据成员?(父类的构造函数是不能被继承的)
这个问题就是使用上面的那行代码来解决的。首先QMainWindow是父类而QPlayer是子类,他们是继承关系;QPlayer(QWidget *parent)是类QPlayer的构造函数,QMainwindow(parent)时类QMainwindow的构造函数。类Qplayer在实现构造函数时,要初始化基类QMainwindow的数据成员但是因为无法继承基类的构造函数,所以才用这种方式初始化基类的书籍成员。
说一下,这种代码的具体格式
派生类::派生类构造函数(总参数列表):基类构造函数(参数列表)
{
派生类中的数据成员初始化;
}
相关文章推荐
- 学习Qt5(1)
- qt中QString转char *
- QT的信号与槽机制介绍
- qt qml opengl QPainter画笔实例
- linux下配置opencv和qt
- Qt aero peek
- Inside Qt Series (十三):Qt/e体系结构概述
- 移植qt-4.8.5至 mini2440建立交叉编译及qt运行环境
- Qt编程中QDiaog的ESC建
- Qt入门学习——常用部件介绍
- QT和MFC
- qml构建一个渐变色的窗口
- QT 创建子窗体
- Qt4中的模态与非模态对话框用法总结
- qt unicode编码到16进制符号字符串
- QT QListWidget去掉滚动条
- QT中tr函数的使用
- Qt 解码unicode 16进制符号字符串
- Inside Qt Series (十四):Qt/e输入法程序设计指南
- Inside Qt Series (十三):Qt/e体系结构概述