1

我今天在阅读 C++ 中类的默认构造函数时在想,假设我们有这个类 SortedArray 的代码:

class SortedArray
{

private:
    struct arrayCell
    {
        int pageID;                
        int totalNeighbors;   
    };
};

我们分配一个指向此类对象的指针数组,然后使用默认构造函数初始化指针。会发生什么?是否会为结构存储内存?如果是 int 将被初始化为什么?谢谢。

4

3 回答 3

2

如果您在谈论类型的指针,SortedArray*那么没有。

SortedArray是具有私有嵌套类型的空类。

如果您分配嵌套类型的实例,SortedArray::arrayCell则整数将被默认初始化(未指定值)。

于 2012-11-02T03:19:55.890 回答
2

旧答案:我很确定为该元素创建了内存,如果您编译并运行它,访问该内存时不会出现分段错误。整数将设置为默认值 0。

默认构造函数信息可以在这里找到。

编辑:上面的答案是不正确的。代码不会为整数元素提供内存,因为定义了结构,但不会创建使用该结构的对象,除非您手动创建一个,在这种情况下,将为这些整数创建内存。

至于创建的整数的值:

它们不会被初始化为任何有意义的东西,它们只会包含创建之前内存中的内容。

于 2012-11-02T02:05:27.250 回答
0

我很确定它将为您在数组中初始化的每个对象分配内存,并将整数设置为其默认值 (0)。

于 2012-11-02T02:03:28.357 回答