簡體   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