2014-03-02 238 views
0

我知道這是可能的一個結構:我們可以在類聲明中聲明類的類型指針嗎?

struct A{ 
    A* p; 
}; 

但我們可以做到這一點的一類:

class B{ 
    B*p; 
} 

我試圖谷歌,但最終沒有找到它。非常感謝你!

+0

你試過了嗎? – Dani

+5

@ShafikYaghmour and Dani:只是在C和C++中嘗試了很多,因爲調用未定義行爲的大量東西(因此被破壞),但在大多數(尤其是天真的)實驗中似乎都能正常工作。這並不是說這是一個好問題,但它不應該通過簡單的嘗試來解決。 – delnan

+0

這兩個聲明有所不同。 A *是公開的,B *是私有的 –

回答

4

是的。用struct聲明的類與用class聲明的類之間沒有區別,除了成員和基地的默認訪問權之外。

1

是的,一個類可以包含指向相同類型的類的指針,並且表示該類的符號可以出現在函數的簽名中或該類中定義的函數的主體中。此外,應該注意的是,在C++中,structclass只有一個區別 - 一個結構的默認訪問級別是「public」,而一個類的默認訪問級別是「private」(當然,爲了改變訪問級別,我們可以在任何一個開始處簡單地寫入「public:」或「private:」;它只是約定導致「類」被用於包含更多功能,封裝和「結構」對於純數據對象)。