我想在下面的代码中理解
class x
{
int a=3;
...
other class members
}
class y
{
int a;
public y()
{
a=3;
}
...
other class members
}
这两种初始化方法有什么区别? 它也与静态类有关吗?
答案 0 :(得分:1)
根据C ++ 11标准,我们可以为a提供类内初始化程序 数据成员。当我们创建对象时,类内初始化器将是 用于初始化数据成员。没有初始化程序的成员 默认初始化。
您的第一个示例使用类内初始化程序,而您的第二个示例仅在默认构造函数中初始化a
。
假设您有另一个构造函数z
,它接受一些参数但不初始化数据成员a
。然后调用z
,
a = 3
。a
,那么a
将被取消初始化。