c 物件模型學習心得 幾個可行的物件模型

2021-08-30 09:29:00 字數 585 閱讀 7083

1、簡單物件模型

整個物件模型被分成很多個槽,每個放置乙個成員的指標,或者是資料成員,或者是函式成員。

成員的定址方式是以第個槽的索引值來尋找,也就是說位址是物件的基址加上索引*指標大小。

2、**物件模型

將資料成員和函式成員劃分開來,資料成員集中放在乙個表中,函式成員放在另乙個表中。

資料成員表存放實際資料,函式成員表中存放函式位址指標。

3、c++物件模型

(1)將非靜態資料成員作為一類放在類物件中。

所有靜態資料成員和函式成員分別放在所有類物件之外;資料成員單獨存放,函式成員指標統一放在乙個表中,

靜態資料成員和函式成員不為每個類物件儲存乙份拷貝,而是為所有的該類物件共用。

(2)這樣,每個類產生很多指向virtualfunctions的指標,放在**之內,這個放著很多函式指標的**被稱為vtbl(virtualtable),而這個指標稱為vptr,這個指標的設定和重置由類的構造、析構和拷貝賦值運算子自動完成,注意是自動完成,不用為此專門增加**。非靜態資料成員也放在類物件儲存空間之外。

類物件空間裡存放2樣東西,乙個是非靜態資料成員(不是資料成員指標),乙個就是vtbl的位址。

對補碼的學習心得

初學c語言,著實為補碼,反碼,原碼這樣的術語傷了一番腦筋。最近終於感覺弄明白了,趕緊記錄一下。以32位數為例,無符號數的32位都代表正數或零,最大111 11,一共32個1,最小是000 000。有符號數的正數只用31位,最高位是區分正負,最大數011111 111,共31個1,還包含0的情況。最大...

對SOA架構的學習心得

本文只是作者在對 soa有了淺顯認識後進行的學習心得總結,內容肯定存在很多的理解偏差,希望同行能批評指正,並一起 共同學習提高。以下圖說明了產品,系統,模組,功能之間的關係。系統n系統2 系統1產品1 產品n模組n 模組3 模組2 模組1 功能1 功能2 功能3 功能4 功能n 產品是由不同的系統構...

面對物件的學習心得

封裝 我對封裝的理解就是知其然,而不用知其所以然。一輛汽車我們知道能用來開,能跑高速就行了,不需要知道內部發動機的構造,離合器的工作原理。是乙個可以直接拿來就用的東西。繼承 我感覺繼承就是乙個分類的概念。就和生物學的綱目科屬種一樣,每一級都有特定的概念,而下一級又從屬於上一級,並擁有上一級所有的定義...