【发布时间】:2014-06-02 04:49:36
【问题描述】:
我有一个类对象数组,在类对象内部我有另一个数组,我需要将其初始化为全零。代码编译并运行,但我的输出显示 C 而不是 0。
来自头文件:
class Cache {
private:
int byte[16];
public:
Cache();
int getBytes(int);
~Cache();
};
来自 cpp 文件
Cache::Cache()
{
byte[16]={0};
}
int Cache::getBytes(int j){
return byte[j];
}
来自另一个 cpp 文件
for (int i = 0; i < 16; i++)
{
for (int j = 0; j < 16; j++) //visual check of initializes main memory
{
cout << cache[i].getBytes(j) << " ";
}
}
设置正确吗?正如我所提到的,getBytes 正在返回 'C' 而不是 '0' 如预期的那样。
【问题讨论】:
-
仅供参考:C++11 允许您在构造函数初始值设定项列表上进行值初始化:例如,
Cache::Cache() : byte() {}。这将对每个元素进行值初始化,这对于标量意味着零初始化,这正是您想要的。 -
@WhozCraig 这也是在 C++03 中实现的方式。我添加了一个答案,但我确定我之前已经这样做过,所以我正在寻找副本。
-
@juanchopanza 我知道至少有一些(我创作了一些,我相信你也写了一些=P)。然而,我终其一生都找不到它们。不知道那是03x的事情。我从来没有真正坚持中等规格,而是等到我们终于拿到了 11 个。
-
@WhozCraig 我不会将 03 视为中间规格。我会说 98 从未真正发生过 :-)
-
@juanchopanza 哈哈。我不认为只有你一个人想假装是这种情况=P
标签: c++ arrays constructor