一个疑惑引发对new的思考

构造函数后面初始化列表中的变量只有一个小括号是什么意思呢?原来在c++11之后,统一了初始化,类类型和基本数据类型都可以用同样的方式初始化了。

如下:

DEMO1::DEMO1():n()
{
}

有一个疑问,这个n()是什么意思?大概能猜测出是一个初始化功能,可平常不都用n(0)这种方式吗?

在C++中new最常用的就是 ClassA *a = new ClassA();

但是new后面也是可以跟基本数据类型的。

变量初始化有三种形式

int a = 0;
int b(0);
int c{ 0 };
int d{};

n() 其实是第二种形式,等价于n(0);同理d{}等价于d{0},初始化为0,下面是几种方式的比较

	typedef struct demo {
		int a;
		int b;
		int c;
	}DEMO;

	DEMO *a1 = new DEMO;//这样是中分配内存,而不初始化的
	DEMO *a2 = new DEMO();//这样分配内存之后,会把DEMO中所有的成员都置为0
	DEMO bb = { 0 };//初始化成员变量为0
	DEMO cc = DEMO();//初始化成员变量为
	delete a1;
	delete a2;

在初始化列表中,使用DEMO1():n()这种方式是很简便的

new DEMO; 不加括号,只会分配内存,而不初始化

new DEMO();  会调用构造函数初始化,默认值为0

上述两种方式,基本数据类型和类类型没有区别。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值