[英]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.