gpt4 book ai didi

c++ - 调用 Struct 构造函数后初始化的值是什么?

转载 作者:太空宇宙 更新时间:2023-11-04 15:01:43 24 4
gpt4 key购买 nike

我有一个结构定义为:

typedef struct s non_t;

struct s {
char tName;
int rCount;
};

然后我像这样初始化它:

non_t *s = new non_t();
//s->tName = ???
//s->rCount = ???

那么在这里,s->tNames->rCount 的值被初始化成什么?它们仍然是 null 吗?我想计算类似的东西:

s->rCount = s->rCount + 1

但是为了让它正常工作,我需要将 s->rCount 初始化为 0...我想我只是对 struct 的初始化方式感到困惑真的有效吗?

最佳答案

当您在 new non_t() 中添加 () 时,成员将为 value initialized ,因此在您的情况下,成员将具有值 0

对于 new non_t,成员将为 default initialized ,所以在你的情况下未初始化。

添加构造函数可以避免这些微妙之处。

struct s {
s() : tName('\0'), rCount(0) {}

char tName;
int rCount;
};

或者在 c++11 中

struct s {
char tName = '\0';
int rCount = 0;
};

关于c++ - 调用 Struct 构造函数后初始化的值是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35783958/

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