求指教这段C++ 构造函数的理解
MyWidget::MyWidget(QWidget*parent):QWidget(parent),ui(newUi::MyWidget)//这两段的作用是什么?为何声...
MyWidget::MyWidget(QWidget *parent) :
QWidget(parent),
ui(new Ui::MyWidget) //这两段的作用是什么?为何声明这个构造函数后面还要增加这两段?,ui这里是个指针吗?
{
ui->setupUi(this);
connect(ui->showChildButton, SIGNAL(clicked()),
this, SLOT(showChildDialog()));
} 展开
QWidget(parent),
ui(new Ui::MyWidget) //这两段的作用是什么?为何声明这个构造函数后面还要增加这两段?,ui这里是个指针吗?
{
ui->setupUi(this);
connect(ui->showChildButton, SIGNAL(clicked()),
this, SLOT(showChildDialog()));
} 展开
3个回答
展开全部
MyWidget::MyWidget(QWidget *parent) : QWidget(parent),ui(new Ui::MyWidget){}
这是构造函数的初始化列表方式,这也是派生类构造函数必须采用的形式
MyWidget是Qwidget的子类,QWidget(parent)是调用了QWidget的构造函数,
这个ui应该是是UI::MyWidget类型的指针
ui(new UI::MyWidget)相当于 ui=new UI::MyWidget;
这是构造函数的初始化列表方式,这也是派生类构造函数必须采用的形式
MyWidget是Qwidget的子类,QWidget(parent)是调用了QWidget的构造函数,
这个ui应该是是UI::MyWidget类型的指针
ui(new UI::MyWidget)相当于 ui=new UI::MyWidget;
追问
ui是属于UI类中的指针吧?不会影响MyWidget构造函数的声明吗?
追答
MyWidget::MyWidget和UI::MyWidget不是一个类型的,所以不会影响的
展开全部
这是构造函数的一种固有写法。叫做成员列表初始化。
括号外的是类的成员。
括号内的是实际初始化参数。
拿括号内的初始化括号外的。
ui是指针。 指向的是新new出的这个对象
括号外的是类的成员。
括号内的是实际初始化参数。
拿括号内的初始化括号外的。
ui是指针。 指向的是新new出的这个对象
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
之前那个答主其实说的很不错,只不过非常简单扼要,理解起来需要一定的辅助资料。谭浩强版本的《C++程序设计》里关于这个用法叫做“用参数初始化表对数据成员初始化”。冒号以前是构造函数,冒号以后通过参数初始化表代替了本应在函数体内的赋值语句。 QWidget(parent)这个貌似和派生类有关,不是非常了解;ui是在MyWidget类中定义的一个成员变量,是指针。至于new Ui::MyWidget这个为什么是一个指针型变量就不清楚了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询