【发布时间】:2011-10-13 20:53:23
【问题描述】:
这是一个简单的问题,但我似乎找不到明确的答案。
如果我们有以下类:
class Test
{
...
char testArray[10];
...
};
当我们创建Test实例时,testArray[1]的默认值是多少?
如果它是一个本地数组,它将是未初始化的。
如果是静态数组,则初始化为0。
当数组是类成员时它会做什么?
【问题讨论】:
-
这取决于类定义的其余部分,包括任何构造函数的定义以及可能如何实例化类实例。请显示更多代码。
-
“班级成员”是什么意思?您在 C++ 中显示的示例
testArray属于实例,而不属于类。要让它属于该类,您需要将其设为static,并在其他地方定义它。 -
@KarlKnechtel:卢西亚诺完全正确地使用了这个词。
testArray是类的非静态数据成员。 “类的成员是数据成员、成员函数 (9.3)、嵌套类型和枚举器。数据成员和成员函数是静态或非静态的;参见 9.4。” -
Charles:假设Test的构造函数没有给testArray赋值。
-
@CharlesBailey:不是这样。如果构造函数提供了一个初始化器,那么它就不会是 default-initialized,而是“什么构成数组成员的 default-initialization?”仍然是一个有效的问题。
标签: c++