如果不初始化结构,则它们不为null。
Snapshot s; // receives no initialization
Snapshot s = {}; // value initializes all members
第二个将使所有成员为零,第一个将其保留为未指定的值。请注意,它是递归的:
struct Parent { Snapshot s; };
Parent p; // receives no initialization
Parent p = {}; // value initializes all members
第二个将p.s.{x,y}
为零。如果您的结构中有构造函数,则不能使用这些聚合初始化程序列表。如果是这种情况,则必须向这些构造函数添加适当的初始化
struct Snapshot {
int x;
double y;
Snapshot():x(0),y(0) { }
// other ctors / functions...
};
x(), y()
会将x和y都初始化为0。请注意,您可以不考虑其类型而将它们初始化:然后进行值初始化,通常会产生适当的初始值(对于int为0,对于double为0.0,为用户定义的调用默认构造函数)具有用户声明的构造函数的类型,...)。这很重要,特别是如果您的结构是模板。