簡體   English   中英

C ++,布爾數組未正確初始化

[英]C++, bool array not properly initialised

我是C ++的新手,如果錯誤很愚蠢,請原諒我。 我目前正在研究一個類,該類可以保存單個字符(每個字符僅一個)並執行一些簡單的操作。 我遇到的問題似乎在類的構造函數中。 因為我只有字符,所以我使用的是大小為256的布爾數組。因此,如果要將字符“ A”添加到數組中,只需將array [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 ,當離開構造函數時它將被銷毀,並且與成員變量_elemens (請注意,名稱不同。)

您可以通過成員初始值設定項列表來初始化成員變量:

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

類中的花括號或相等的初始化程序 (我不知道如何聲明Set ,僅作為示例):

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

正如@MM所指出的,在兩種情況下, {}都可以很好地工作(所有元素都將設置為false ),並且對於您的情況而言更可取。

數組_elements是Set()構造函數的局部變量。 您不應該能夠在Set()構造函數之外訪問它。

您要使用它的方式,需要_elements成為Set類的公共成員變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM