为了账号安全,请及时绑定邮箱和手机立即绑定

为什么在线的构造函数中点的初始化一定要用初始化列表?请告诉原因!

Line:Line(int x1,int y1,int x2,int y2):m_coorA(x1,y1),m_coorB(x2,y2)

{

}

正在回答

2 回答

因为要调用父类的有两个参数的那个构造函数,如果初始化放在子类的构造函数中而不用初始化列表,很难调用父类的有两个参数的那个构造函数,当然你可以在子类的构造函数中这样写:m_coorA.x = x1;m_coorA.y = y1;m_coorB.x = x1;m_coorB.y = y1;这样写可以达到初始化的目的,但写的代码就多了,直接调用父类的有两个参数的那个构造函数就简单多了,所以选择用初始化列表。

5 回复 有任何疑惑可以回复我~
#1

雲野 提问者

非常感谢!DoDream
2015-11-26 回复 有任何疑惑可以回复我~
#2

雲野 提问者 回复 DoDream

十分感谢。。
2015-11-26 回复 有任何疑惑可以回复我~

实例化Line时,要先实例化m_coorA和m_coorB,但是这两个对象没有默认构造函数,所以要用初始化列表。(初始化列表执行 在构造函数之前!!!)

2 回复 有任何疑惑可以回复我~
#1

热喷Redpen

感谢,我觉得你的答案比DoDream的要简洁!
2016-08-12 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C++远征之封装篇(下)
  • 参与学习       70898    人
  • 解答问题       534    个

封装--面向对象三大特征之一,通过案例让C++所学知识融会贯通

进入课程

为什么在线的构造函数中点的初始化一定要用初始化列表?请告诉原因!

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号