2017-07-23 128 views
-1

請考慮下面這個例子:爲什麼在C++中允許將類對象指向成員變量,但不允許類對象本身?

#include <bits/stdc++.h> 
using namespace std; 

class Example{ 

    private: 
     int var1; 
     Example *oak; 
}; 

是好的,但不是這個

#include <bits/stdc++.h> 
using namespace std; 

class Example{ 
    private: 
     int var1; 
     Example oak; 
}; 

爲什麼有一個指向同一類對象作爲成員變量是好的,但不是類對象本身作爲一個成員變量?

你可以給我一些實際的情況,有一個類對象作爲成員變量是有用的嗎?

+0

第二種類型的尺寸是多少?在C++中,每種類型都有一個大小。一個int可能是4個字節,一個指針也可能是4個字節。在第二個例子中,'Example'的大小必須是'sizeof(Example)= 4 + sizeof(Example)'。這是一個沒有解決方案的方程式。在第一個例子中,你有'sizeof(Example)= 4 + sizeof(Example *)= 4 + 4 = 8'(作爲一些目標的例子) – Justin

+2

你不能存儲一架(相同型號的)飛機一架飛機的貨艙......但你可以存儲一張紙條,說明在哪裏可以找到另一架飛機 –

回答

0

你會有一個無限的對象定義循環。你如何看待你將停止定義橡木實例?

您需要明確地創建指針,以便您可以控制創建。

+0

你能說出爲什麼這個指針能夠反射物體本身嗎? –

0

好吧,你是正確的一個類不能擁有自己的對象,因爲如果我們這樣做,編譯器將無法計算對象的大小,因爲它將在無限循環中進行。 例如: 我在main()對象中初始化一個對象將包含另一個對象,而另一個對象將包含另一個對象,並且編譯器將無法計算大小。但是,正如我們所知的,指針具有固定的大小,它指向一個int char或一個對象,因此編譯器將能夠計算其大小。

相關問題