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
提交
取消