gpt4 book ai didi

c++ - 与它所属的类相同类型的对象的数组是否会创建无限实例?

转载 作者:行者123 更新时间:2023-11-27 22:48:46 30 4
gpt4 key购买 nike

很抱歉这个问题的措辞很尴尬,但我不确定如何用文字更好地描述它,所以我会尝试举个例子

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,请创建一个包含两个指针的数组。

关于c++ - 与它所属的类相同类型的对象的数组是否会创建无限实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40028724/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com