class PaintWidget:public QWidget{public:PaintWidget(QWidget*parent=0)}然后在cpp中写PaintWidget::PaintWidget(QWidget*parent):QWidget(parent){}请问 前面的*parent=0 和cpp中的(QWidget*parent):QWidget(parent)是什么意思
2 回答

凤凰求蛊
TA贡献1825条经验 获得超4个赞
意思是说,重定义父对象。
如何重定义呢?看parent参数。
当PaintWidget放到某个窗口上的时候,该PaintWidget的父对象就被重定义为该窗口。
但是,由于PaintWidget本身继承于QWidget,那么还需要对QWidget的父对象重定义。PaintWidget通过parent指针来告诉父类QWidget:“我的父对象是该窗口,请把你的父对象也置为那个窗口”。
就是这样。
请注意区分父类和父对象的区别。

波斯汪
TA贡献1811条经验 获得超4个赞
1.parent=0这句是默认参数列表,就是参数默认值的意思,只要在声明时加上即可。
2.PaintWidget::PaintWidget(QWidget*parent):QWidget(parent)
冒号之前的是使用类作用域限定符引用的函数声明原型,冒号之后的是初始化列表。QWidget(parent) 使用parent指针初始化父类实例的意思。因为派生类的初始化过程中第一步就是调用父类的构造函数初始化父类结构,QWidget(parent) 显示调用了QWidget的一个构造函数。
添加回答
举报
0/150
提交
取消