构造函数的初始化列表

本文深入探讨了C++编程中构造函数的初始化列表,解释了如何使用它来正确初始化类的对象成员,强调了不使用初始化列表可能带来的问题,包括效率和内存管理。通过实例代码,详细阐述了构造函数初始化列表的工作原理及其在类继承和复合中的应用。
摘要由CSDN通过智能技术生成

首先,运行下图中的C++代码,输出是什么?
class A
{
private:
	int n1;
	int n2;
public:
	A(): n2(0) , n1(n2 + 2)
	{
	}
	void Print()
	{
		cout<<"n1:"<<n1<<",n2:"<<n2<<endl;
	}
};
int main(void)
{
	A a;
	a.Print();
	return 0;
}
        答案:输出n1是一个随机的数字,n2为0。在C++中,成员变量的初始化顺序与变量在类型中的声明顺序相同,而与它们在构造函数的初始化列表中的顺序无关。因此在这道题中,会首先初始化n1,而初始n1的参数n2还没有初始化,是一个随机值,因此n1就是一个随机值。初始化n2时,根据参数0对其初始化,故n2=0。
        构造函数的初始化列表仅仅指定用于初始化成员的值,并不指定这些初始化执行的次序。成员初始化的次序就是定义成员的次序,第一个成员首先被初始化,然后是第二个,依次类推。也就是说,C++编译器很容易得到构造函数的参数列表,获取参数,然后根据成员变量的声明顺序初始化成员变量(这是因为&
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值