gpt4 book ai didi

c++ - C++ 结构的成员是否默认初始化为 0?

转载 作者:IT老高 更新时间:2023-10-28 11:28:39 25 4
gpt4 key购买 nike

我有这个结构:

struct Snapshot
{
double x;
int y;
};

我希望 xy 为 0。它们是默认为 0 还是我必须这样做:

Snapshot s = {0,0};

还有哪些其他方法可以将结构归零?

最佳答案

如果你不初始化结构,它们不为空。

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() 来初始化它们而不管它们的类型:然后是值初始化,通常会产生一个适当的初始值值(0 表示 int,0.0 表示 double,为具有用户声明的构造函数的用户定义类型调用默认构造函数,...)。这很重要,特别是如果您的结构是模板。

关于c++ - C++ 结构的成员是否默认初始化为 0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1069621/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com