标签:
阅读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的数据成员但是因为无法继承基类的构造函数,所以才用这种方式初始化基类的书籍成员。
说一下,这种代码的具体格式
派生类::派生类构造函数(总参数列表):基类构造函数(参数列表)
{
派生类中的数据成员初始化;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:
原文地址:http://blog.csdn.net/xgsilence/article/details/48035065