繁体   English   中英

与它所属的类相同类型的对象数组会创建无限实例吗?

[英]Would an array of the same type of objects as the class it is a member of create infinite instances?

很抱歉这个问题的措词不好,但是我不确定如何用语言更好地描述它,所以我将尝试一个例子

struct A {
    A* a;
    A() {a = new A[2];}
    ~A() {delete[] a;}
}

int main() {
    A aa;
}

一旦构造了aastruct A*a内部将被分配一个包含两个A对象的数组。 但是在我看来,由于默认构造函数的作用,每个对象将依次创建一个自己的A对象数组,并且似乎不断循环。 我认为正确吗?

我认为正确吗?

是。 构造函数被递归调用,您可能会耗尽动态存储空间或在某个时候溢出调用堆栈。

是的,您绝对正确。 您的代码有效地在其内部嵌入了一组对象。 本质上,您正在使这个不可能的struct

struct A {
    A a[2]; // Impossible
};

您的代码使用指针绕过了编译器的检查,因此由于无限递归,代码在运行时崩溃。

如果要使A可选地引用两个A ,则使一个包含两个指针的数组。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM