打印

构造函数问题

[复制链接]
1198|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yybj|  楼主 | 2012-6-16 18:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
dfsa| | 2012-6-16 18:51 | 只看该作者
上面代码中,CLS obj;这里已经为obj分配了内存,然后调用默认构造函数,但是默认构造函数还未执行完,却调用了另一个构造函数,这样相当于产生了一个匿名的临时CLS对象,它调用CLS(int)构造函数,将这个匿名临时对象自己的数据成员m_i初始化为0;但是obj的数据成员并没有得到初始化。于是obj的m_i是未初始化的,因此其值也是不确定的。

使用特权

评论回复
板凳
无冕之王| | 2012-6-16 19:01 | 只看该作者
一般来说两次调用构造函数就会生成两个对象,不管他们是临时的或者匿名的,他们所占用的内存是不同的。因此尽管你单步调式看到m_i似乎已经被赋给0了,但那只是其中一个对象中的m_i,而不是代码中的obj这个对象。

使用特权

评论回复
地板
pkat| | 2012-6-16 19:15 | 只看该作者
不会调用默认函数吧。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

175

主题

2496

帖子

1

粉丝