您的位置:首页 > 编程语言 > Qt开发

Qt学习之路【2】:调用父类构造函数

2015-08-29 09:21 127 查看
阅读Qt代码的时候经常遇见这样一类代码:

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的数据成员但是因为无法继承基类的构造函数,所以才用这种方式初始化基类的书籍成员。

说一下,这种代码的具体格式

派生类::派生类构造函数(总参数列表):基类构造函数(参数列表)

{

派生类中的数据成员初始化;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: