深度探索C 物件模型讀書筆記 三

2021-09-25 10:48:18 字數 762 閱讀 7822

深度探索c++物件模型讀書筆記 三

c++深度探索《三》

1.空的class是1個位元組 大家看一下這個程式:

#include

using namespace std;

class demo

;int main()

;class device:public dest

;int main()

{cout<<「sizeof(dest):」《每乙個static data member只有乙個實體,存放在程式data segment中,每次取用static member,就會被內部轉化成對該唯一的extern實體的直接參考。

static變數大家都很熟悉了,就不做過多的的闡述了,有上面這段話,會更好理解一些。

3.c++物件模型中的問題

提出這麼問題:

point3d origin;

origin.x = 0.0;

point3d *pt = &origin;

pt->x = 0.0

這兩種訪問的差異。其實,大家也都知道,一種是利用物件訪問成員資料,另外一種是用指標來訪問資料。其實,c++物件模型中想要說明的是:假設point3d是乙個子類,繼承與虛基類的成員函式,此時pt就不知道指向哪個型別了,需要等到執行期間才知道。但是origin是可以的,即使繼承與虛基類,但是資料成員在編譯期就固定了,資料成員的偏移也就確定了。

4.繼承的空間布局 看一下這段**:

#include

using namespace std;

《深度探索C 物件模型》讀書筆記(5)

純虛函式 在設計抽象基類時,需要注意以下幾點 1 不要將destructor宣告為pure virtual function 如果將destructor宣告為pure virtual function,則設計者一定得定義它。因為每乙個derived class destructor會被編譯器加以擴充...

《深度探索C 物件模型》讀書筆記(6)

物件的構造和解構 一般而言,我們會把object盡可能放置在使用它的那個程式區段附近,這樣做可以節省不必要的物件產生操作和銷毀操作。全域性物件 全域性物件的靜態初始化策略包括以下幾個步驟 1 為每乙個需要靜態初始化的物件產生乙個 sti 函式,內含必要的constructor呼叫操作或inline ...

讀書筆記 《深度探索c 物件模型》 (3)

第四章 function語意學 4.2 虛擬成員函式 a 單一繼承下的virtual function 乙個class只會有乙個virtual table 這個class自己定義的virtual function,它override了乙個可能存在的base class virtual functio...