2016-06-27 119 views
-1

假設我有一個基類指針數組。 我可以在這個數組中存儲派生類對象指針(從該基類派生)嗎?我能以相反的方式做到嗎?派生對象指針可以存儲在基類指針數組中嗎?

+0

爲什麼不通過提供一些代碼使它成爲一個實際問題? – user463035818

+0

因爲這是大學考試的理論問題,沒有提供任何代碼。 – Akra

+1

是的,你可以在'std :: vector '中存儲'Derived *',但反之亦然。 – ArchbishopOfBanterbury

回答

4

我可以在這個數組中存儲派生類對象指針(派生自該基類)嗎?

是的。

我可以用相反的方法嗎?

假設你有:

struct Base 
{ 
}; 

struct Derived1 : Base 
{ 
}; 

struct Derived2 : Base 
{ 
}; 

std::vector<Derived1*> ptrs; 
Base* bPtr = new Derived2; 
ptrs.push_back(bPtr);  // Not allowed. 
          // If it were, imagine the problems. 
          // You have a Derived2* in the guise of a Derived1* 
+0

即使派生類具有額外的公共功能,也能做到這一點嗎? – Akra

+1

你可以。但是,您無法通過基類指針訪問派生類成員。要訪問派生類成員,您必須先將指針轉回到派生類指針。 –

相關問題