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

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

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 回复 有任何疑惑可以回复我~

举报

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

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

进入课程

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信