重讀 深入C 物件模型小結(持續更新中)

2021-05-24 08:37:16 字數 631 閱讀 5009

記得幾年前還在廣州的時候有讀過這本書,但比較粗略,並沒有融會貫通,可能是之前c++基礎較為薄弱。搬家後這本書沒有落掉,因此近段時間晚上1小時的讀書時間看起了這個。

第一章主要講c++ 物件模型,主要分析c++物件模型的結構,當中還跟c語言做了一些對比,例如分析了為什麼c++要引入class,原因其實比較簡單,就是struct不適合c++ oo的思想,並且擴充套件到模板使用中顯得過於突兀。重頭戲是討論了c++其實並沒有傳說中比c++效率低很多,並且c++雖然加了虛函式的機制增加了空間的成本,但是卻贏來了更好的擴充套件性。主要看使用者如何拿捏了

第二章是講解建構函式的,先重點介紹了什麼情況下編譯器會生成預設建構函式,情況有4。1是包含有建構函式的類成員,2是父類有預設建構函式三是虛基類有預設建構函式 四是存在虛函式 初始化虛表用的。接著講解拷貝建構函式,跟預設建構函式同理,不是平白無故編譯器就會自動生成的,也是需要在特定的情況下編譯器才會生成!

第三章 資料語意學,乙個空的類在普通的c++編譯器一般占用乙個char 的空間,這麼做的原因是用於標識類。類空間大小還跟 語言本身支援的語法以及邊界對應相關。例如乙個 5位元組的類可能 會被擴充套件為8位元組,在32位機器上可以提高更高效率的訪問。類資料成員的儲存順序c++標準並沒用硬性的規定,多數的編譯器按照成員變數宣告的順序儲存,靜態成員變數統一放在全域性儲存區。

重讀深度探索C 物件模型 函式

對靜態函式的呼叫實際上經歷了以下的過程 1.改寫函式原型,安插乙個this指標作為額外的引數 float point3d magnitude3d const float magituded3d const point3d this 2.將函式內對非靜態成員的訪問改為經由this指標來訪問 靜態成員不...

深入探索C 物件模型

深入探索c 物件模型 本書目錄結構如下 第1章 關於物件 object lessons 加上封裝後的布局成本 layout costs for adding encapsulation 1.1 c 模式模式 the c object model 簡單物件模型 a object model 驅動物件模...

深入探索C 物件模型之物件

物件 一 在c語言中,資料 和 對資料的處理 函式 分開宣告的,也就是說,語言本身並沒有支援 資料和函式 之間的關聯性。例如,typedef struct point3dpoint3d 而在c 中,座標型別和座標數目都可以引數化 template class point type operator ...