代码中的输出语句输出0吗,为什么

struct CLS

{

    int m_i;

    CLS( int i ) : m_i(i) {}

    CLS()

    {

        CLS(0);

    }

};

CLS obj;

cout << obj.m_i << endl;

--- 不是, 我个人是这样理解的:因为在CLS()中调用了CLS(0),所以在CLS()中又构造出一个CLS匿名对象,并用0来初始化该成员变量,而不是ojb对象.CLS()调用结束时,这个对象就被析构了,而没有按我们原意图把0赋值给obj对象.

有关面向对象程序设计的书中都提到了,构造函数不能显示的调用.只能在初始化对象时使用.所以程序应该这样子写:

CLS obj(0);

cout << obj.m_i << endl;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值