默认情况下,C ++结构的成员是否初始化为0?

萨沙

我有这个struct

struct Snapshot
{
    double x; 
    int y;
};

我想xy为0。他们是否会默认为0或做我必须做的:

Snapshot s = {0,0};

将结构归零的其他方法有哪些?

约翰尼斯·绍布-Litb

如果不初始化结构,则它们不为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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

默认情况下是否初始化结构变量?

在C ++中,默认情况下是否可以保证将指针类型数组的元素初始化为nullptr?

默认情况下,在struct / class中声明的指针是否初始化为nullptr?

任何情况下的默认结构初始化?

为什么不将C ++结构初始化为`= {0}`并将其所有成员都设置为0?

默认变量的值与默认情况下的初始化

C是否将结构填充初始化为零?

如何在 C++ 中将结构初始化为 0

默认情况下,C 中未初始化的局部变量是静态的吗?

默认情况下是否安装Java?

默认情况下Scrapy是否异步?

默认情况下,代码生成初始化为空列表而不是null

默认情况下,是否使用cdecl + fastcall约定编译c ++成员函数?

有没有办法在不知道 C 中的类型的情况下将变量初始化为默认值?

在新的c ++ 11项目中,默认情况下是否应该删除任何操作?

默认情况下,Objective-C函数结果是否为空?

默认情况下,C ++ 17中的模板内部是否内联了静态变量?

那时,默认情况下C中的char变量是否声明为unsigned?

是否可以在不初始化内部对象的情况下将数组初始化为容量?

默认情况下,如何在Swift中对成员公开成员初始化器?

在哪种情况下,c ++会将变量初始化为零?

有默认情况下静态的成员函数吗?

DynamoDB默认情况下是否具有锁定?

默认情况下,计步器是否在后台运行?

默认情况下,接口是否扩展Object?

MySql-默认情况下主键是否唯一?

默认情况下,MySQL 是否对静态数据应用加密?

休眠默认情况下是否使用PreparedStatement

默认情况下是否缓存Django重定向响应?