c++中 子類對象與父類對象的內存關係

 

問題:如題。假設有父類A與子類B

A實例化一個對象a   B實例化一個對象b

那麼在內存中 a與b的地址關係是什麼。是他們的首地址都一樣嗎?

解答:

他們是沒有必然關係的。就跟你隨便生成另外兩個其他類型的變量一樣。當然,你實例化的對象b跟A有關係。
b對象開頭的部分4個字節是虛函數表,接着就是基類的數據成員,然後是子類的數據成員。
 
 
對方:C++中的類對象實例化後存在內存中的什麼位置,堆還是棧?
我(思索,但不確定): 既可能在棧又可能在堆
對方:什麼情況下在棧,什麼情況下在堆?
我:如果類對象實例作爲局部變量出現,放在棧中,作用域結束,類實例所佔內存釋放,如果是通過指針的形式 new class就在堆中創建,
在堆中的要手動刪除。
對方:棧的分配回收,誰來控制?
我:操作系統
對方:那還要類實例的析構函數做什麼?
我(有點暈)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章