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

请教默认构造函数调用自定义构造函数的问题

请教默认构造函数调用自定义构造函数的问题

交互式爱情 2019-04-08 11:18:11
先看一段简单的代码吧:#includeusingnamespacestd;structCLS{intm_i;CLS(inti):m_i(i){}CLS(){CLS(2);}};intmain(intargc,char*argv[]){CLSobj1;cout
查看完整描述

2 回答

?
慕少森

TA贡献2019条经验 获得超9个赞

1、你在构造函数中调用了另一个构造函数,实际上只是创建了一个匿名的临时变量!而不是像你想象中的那样!
2、如果写成CLSobj1();那就是一个函数声明!
3、你在构造函数中没有显式对成员变量进行初始化或者赋值,所以m_i的结果是未定义的!
                            
查看完整回答
反对 回复 2019-04-08
?
炎炎设计

TA贡献1808条经验 获得超4个赞

1.这才是符合你预期的写法,至于你的写法为什么是错的,原因是因为你写错了,详见各种入门书籍。
CLS():CLS(2)
{
}
2.因为有歧义,至于具体为什么不能这么写,因为这是规定。
leunggamciu回复jollywing:因为有歧义!这样就没问题:CLSobj1=CLS();
3.这是未定义行为,不同的编译器有不同的结果。至于为什么是未定义行为,个人猜测是为了保证可移植性。
                            
查看完整回答
反对 回复 2019-04-08
  • 2 回答
  • 0 关注
  • 383 浏览
慕课专栏
更多

添加回答

举报

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