![](/img/trans.png)
[英]does a derived class object contain private members of the base class? What does it look like in memory?
[英]Does an instantiation of a derived class allocate memory for private members of base class?
我想這個話題是我需要問的。 關於這個主題的一點解釋會很好。 請清楚一些問題,例如為什么或為什么不?
例:
class A {
private:
int a;
};
class B : A {
int b;
};
int main (int argc, char **argv) {
B *p = new B(); // Does this allocate memory for a?
}
是。 類對象包含其所有直接非靜態數據成員以及任何基類子對象的成員。 訪問說明符沒有區別; 它們僅限制名稱的使用位置。
這取決於你的意思是什么分配 :它不會做一個堆分配或東西。 派生對象將包含從基礎繼承的成員。 這就是派生類的所有基類都可以看作是子對象。 派生類對象將包含所有這些子對象,並且還將確保它們被正確構造/銷毀。
是的它也會為A分配內存。
因為當您從另一個類繼承一個class
並且在創建派生類的object
時,Complier將分配等於派生類+基類大小的內存,這樣就no loss of data.
base class members
也可以從derived class.
訪問derived class.
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.