构造函数后面初始化列表中的变量只有一个小括号是什么意思呢?原来在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
上述两种方式,基本数据类型和类类型没有区别。