C++ 類占用空間計算方式
1、一個類占用的空間主要是屬性占用空間,而成員函數一般不占用空間,但是虛函數占用空間,需要說明的是,無論多少個虛函數,只要占用4個字節即可,也就是索引指向一個虛擬表的首位置。另外需要說明的是占用空間都考慮了對齊,所以不足4個的按照滿4個的算。
2、類的繼承,子類占用空間是父類基礎上增加本類空間即可。所以說可以認為,子類就是直接拷貝了父類的內容,然後結合自身的內容。而且存儲空間也是這個順序,即先父類分配空間,然後才是子類空間。
3、靜態成員變量不占用類空間,應該是確實沒有放入這個類的裡面,而且沒有指針指向它,只能通過類::來訪問,也就是說靜態成員是隨著類的存在而存在,而 不依賴於對象,它的存在意義主要還是區分,否則如何確定其意義,這還是體現了相關的都方一起的思想,比全局變量或者常量更方便使用和理解。
4、需要說明的是,虛函數對應的虛擬表在空間的其他位置,和對象是沒有聯系的,但是虛擬表地址是和類統一的,也就是說一旦確定,無論在哪個對象中,其指針 值是一樣的,即虛擬表位置是一定的。指針放在對象的最前面,首先是指向虛函數的虛擬表指針,然後才是其他成員變量空間。
《C++ 設計新思維》 下載見 http://www.linuxidc.com/Linux/2014-07/104850.htm
C++ Primer Plus 第6版 中文版 清晰有書簽PDF+源代碼 http://www.linuxidc.com/Linux/2014-05/101227.htm
讀C++ Primer 之構造函數陷阱 http://www.linuxidc.com/Linux/2011-08/40176.htm
讀C++ Primer 之智能指針 http://www.linuxidc.com/Linux/2011-08/40177.htm
讀C++ Primer 之句柄類 http://www.linuxidc.com/Linux/2011-08/40175.htm
將C語言梳理一下,分布在以下10個章節中: