C++ 类缺省构造函数调用带参数的构造函数

本文介绍了C++中在缺省构造函数内调用带参数构造函数的情况。通过分析程序执行流程,揭示了这种调用方式会引发两次对象实例化,分别在栈上分配M1和M2空间,并执行构造函数和析构函数的过程。在缺省构造函数结束后,析构函数被调用释放内存,说明在缺省构造函数中调用带参构造函数并不影响原有空间的数据。
摘要由CSDN通过智能技术生成

今天在看《effective C++:55 第三版》条款18:80页的时候,看到用外覆类型定义类型参数的例子:

class Month{
public:
    static Month Jan(){return Month(1);}
private:
    explicit Month(int num){val=num;}
    int val;
};
然后想到前几天做到的一个笔试题:

struct CLS
{
	int m_i;
	CLS(int i): m_i( i ) {   }
	CLS()
	{
		CLS( 0 );
	}
};

int main(void)
{
	CLS obj;
	cout << obj.m_i << endl;
	return 0;
}

这题的答案是,不能输出0,因为在默认构造函数内部再调用带参的构造函数属用户行为而非编译器行为,亦即仅执行函数调用,而不会执行其后的初始化表达式。只有在生成对象时,初始化表达式才会随相应的构造函数一起调用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值