我有这个struct
:
struct Snapshot
{
double x;
int y;
};
我想x
和y
为0。他们是否会默认为0或做我必须做的:
Snapshot s = {0,0};
将结构归零的其他方法有哪些?
如果不初始化结构,则它们不为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都初始化为0。请注意,您可以x(), y()
不考虑它们的类型而将它们初始化:然后进行值初始化,通常会产生适当的初始值(对于int为0,对于double为0.0,为用户定义的调用默认构造函数)具有用户声明的构造函数的类型,...)。这很重要,特别是如果您的结构是模板。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句