我有一个结构定义为:
typedef struct s non_t;
struct s {
char tName;
int rCount;
};
然后我像这样初始化它:
non_t *s = new non_t();
//s->tName = ???
//s->rCount = ???
所以在这里,
s->tName
和s->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;
};