程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++ 對象的內存布局(上)

C++ 對象的內存布局(上)

編輯:C++入門知識

 

前言

  07年12月,我寫了一篇《html" target=_blank>C++虛函數表解析》的文章,引起了大家的興趣。有很多朋友對我的文章留了言,有鼓勵我的,有批評我的,還有很多問問題的。我在這裡一並對大家的留言表示感謝。這也是我為什麼再寫一篇續言的原因。因為,在上一篇文章中,我用了的示例都是非常簡單的,主要是為了說明一些機理上的問題,也是為了圖一些表達上方便和簡單。不想,這篇文章成為了打開C++對象模型內存布局的一個引子,引發了大家對C++對象的更深層次的討論。當然,我之前的文章還有很多方面沒有涉及,從我個人感覺下來,在談論虛函數表裡,至少有以下這些內容沒有涉及:

1)有成員變量的情況。 2)有重復繼承的情況。 3)有虛擬繼承的情況。 4)有鑽石型虛擬繼承的情況。   這些都是我本篇文章需要向大家說明的東西。所以,這篇文章將會是《C++虛函數表解析》的一個續篇,也是一篇高級進階的文章。我希望大家在讀這篇文章之前對C++有一定的基礎和了解,並能先讀我的上一篇文章。因為這篇文章的深度可能會比較深,而且會比較雜亂,我希望你在讀本篇文章時不會有大腦思維紊亂導致大腦死機的情況。;-)  

對象的影響因素

  簡而言之,我們一個類可能會有如下的影響因素:   1)成員變量 2)虛函數(產生虛函數表) 3)單一繼承(只繼承於一個類) 4)多重繼承(繼承多個類) 5)重復繼承(繼承的多個父類中其父類有相同的超類)
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved