gpt4 book ai didi

C++, bool 数组未正确初始化

转载 作者:行者123 更新时间:2023-11-30 01:10:24 37 4
gpt4 key购买 nike

我是 C++ 的新手,如果错误很愚蠢,请原谅我。我目前正在上一门课,它可以保存单个字符(每个字符只有一个)并进行一些简单的操作。我遇到的问题似乎出在类的构造函数中。因为我只有字符,所以我使用了一个大小为 256 的 bool 数组。所以如果我想将字符“A”添加到我的数组中,我只需将数组 [64] 翻转为 1。

为了以我想要的方式使用数组,我将它的每个索引都初始化为零。所以它看起来像这样:

Set<char>::Set() {
bool _elements[256] = {0};
}

如果我现在检查成员变量 _elements 的所有值,它不仅包含零。我不知道是什么原因造成的。没有其他函数调用或介于两者之间的任何东西。

Set set;
for (int i = 0; i < 256; i++) { printf("%d\n", set._elemens[i]; }

最佳答案

你在构造函数中初始化了一个局部变量_elements,它会在退出构造函数时被销毁,与成员变量_elements无关. (注意名字不一样。)

可以通过member initializer list初始化成员变量:

Set<char>::Set() : _elemens {0} {}

in-class brace-or-equal initializer (我不知道 Set 是如何声明的,仅作为示例):

struct Set {
bool _elemens[256] = {0};
};

正如@M.M 指出的那样,对于这两种情况,{} 都可以很好地工作(所有元素都将设置为 false)并且更适合您的情况。

关于C++, bool 数组未正确初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37934768/

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