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

按着老师的例子做下去,调用拷贝构造函数的t2,t3,并没有输出跟t1相同的结果。,这是为什么

55a592ea00011cfd04690156.jpg

55a592ea000152c105000179.jpg

55a592ea0001537904290345.jpg

http://img1.sycdn.imooc.com//55a5931f0001186d06770442.jpg

帮忙看看 哪里有问题,谢谢

正在回答

1 回答

你的t1调用了默认构造函数。t2和t3都调用了copy constructor。从运行结果的前三句看并没有问题。

可你定义的copy constructor并没有复制相应的成员变量啊,仅仅是输出了一句表明自己被调用的字符串。所以t2和t3成员变量的值都是默认值。

string的默认值为空字符串,int这种内置类型的默认初值是未定的。

输出的结果中打印t2和t3的位置上:在空格前其实就是空字符串,后面一个0和4237840就是随机的int。

正确的copy constructor应该在构造初始化列表中给自己的成员变量赋初值。

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

四灬阿哥 提问者

嗯嗯 ,我知道了,还得给拷贝构造函数初始化是吧,但是不知道要怎样给他初始化,大神,在指导一下吧,谢谢
2015-07-15 回复 有任何疑惑可以回复我~
#2

onemoo 回复 四灬阿哥 提问者

我说了啊:“正确的copy constructor应该在构造初始化列表中给自己的成员变量赋初值” Teacher(const Teacher &tea) : m_strName(tea.m_strName), m_age(tea.m_age) {...}
2015-07-15 回复 有任何疑惑可以回复我~
#3

四灬阿哥 提问者

非常感谢!
2015-07-16 回复 有任何疑惑可以回复我~

举报

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

封装--面向对象的基石,本教程力求帮助小伙伴们即学即会

进入课程

按着老师的例子做下去,调用拷贝构造函数的t2,t3,并没有输出跟t1相同的结果。,这是为什么

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

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

帮助反馈 APP下载

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

公众号

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