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

为什么在线的构造函数中点的初始化一定要用初始化列表?

为什么在线的构造函数中点的初始化一定要用初始化列表?

C++
Timothy飞 2016-06-26 00:13:16
为什么在线的构造函数中点的初始化一定要用初始化列表?答:Coordinate类的构造函数有参数要求传入,并没有默认构造函数。实例化Line时,要先实例化m_coorA和m_coorB两个子对象,但是这两个子对象没有默认构造函数,所以要用初始化列表。(初始化列表执行 在构造函数之前!!!)
查看完整描述

2 回答

?
黑色旋风

TA贡献20条经验 获得超25个赞

Coordinate类的构造函数有参数要求传入,并没有默认构造函数。实例化Line时,要先实例化m_coorA和m_coorB两个子对象,但是这两个子对象没有默认构造函数,所以要用初始化列表。


当然你不用初始化列表也可以,在函数体里面赋值

查看完整回答
1 反对 回复 2016-06-26
  • Timothy飞
    Timothy飞
    当Coordinate类没有默认构造函数时候,不用初始化列表而在函数体里赋值,这样赋值吗? Line::Line(int x1,int y1,int x2,int y2) { m_coorA.setX(x1); m_coorA.setY(y1); m_coorB.setX(x2); m_coorB.setY(y2); cout << "Line()" <<endl; } 这样程序不能运行!
?
asd8532

TA贡献143条经验 获得超187个赞

如果与继承关系的话,父类有带参数的构造函数就要用初始化列表,其他情况也可以没有

查看完整回答
1 反对 回复 2016-06-26
  • 2 回答
  • 0 关注
  • 1348 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信