[英]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;
}
一旦构造了aa
, struct A
的*a
内部将被分配一个包含两个A
对象的数组。 但是在我看来,由于默认构造函数的作用,每个对象将依次创建一个自己的A
对象数组,并且似乎不断循环。 我认为正确吗?
我认为正确吗?
是。 构造函数被递归调用,您可能会耗尽动态存储空间或在某个时候溢出调用堆栈。
是的,您绝对正确。 您的代码有效地在其内部嵌入了一组对象。 本质上,您正在使这个不可能的struct
:
struct A {
A a[2]; // Impossible
};
您的代码使用指针绕过了编译器的检查,因此由于无限递归,代码在运行时崩溃。
如果要使A
可选地引用两个A
,则使一个包含两个指针的数组。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.