深度探索C 物件模型 第1章 關於物件

2021-10-11 01:43:05 字數 1395 閱讀 2057

1.3 物件的差異

一、簡單物件模型:將指向data member與member function的指標放入到object中,member本身並不放在object中

二、**驅動物件模型:object』中包含兩個指標,分別指向data member table與function member table

;//虛繼承

class

ostream

:virtual

public ios

;//虛繼承

不同的物件模型,會導致「現有的程式**必須修改」以及「必須加入新的程式**」兩個結果

x foobar()

x foobar()

//不需要named return statement

//不需要摧毀local objext xx

return

;}

struct與class關鍵字接近,struct的保留可以說是為了方便c語言遷移至c++

多型繼承後,以動物園zooanimal為例,bear是其中一種動物,繼承**如下:

class

bear

:public zooanimal

則記憶體布局如下:指標pb覆蓋的位址包含整個bear object,而指標pz只覆蓋了bear object的zooanimal subobject。

除了zooanimal subobject**現的members,但不能使用指標pz來直接處理bear的任何members,除非通過virtual機制

《深度探索C 物件模型》 第1章 關於物件

關於物件,首先要和c語言的struct對比,c 的static和nonstatic函式雖然和類繫結在一起,但他們被放在所有的class object之外,c 在布局和時間上的額外負擔是有virtual和多重繼承引起的。1.1 c 物件模式,主要介紹了vptr和vtbl的概念,很多具體的內容還是放到了...

深度探索C 物件模型 (1)關於物件

哎 再開新坑,希望19年能把開的這幾個坑都填上。class 類 class object 類物件 簡單來說,c 物件模型的例項的組成包括下面幾個部分 vtbl 0 指向type info objext vtbl 1 指向析構函式 vtbl 2 指向預設建構函式 繼承關係也可以指定為virtual,即...

深度探索c 物件模型(1) 關於物件

一 c 物件模型 1 nonstatic data members被存於class object內部,static data member static nonstatic function放在class object之外。2 虛函式則使用虛函式表 vtbl 每個object都有virtual fu...