標籤:
何為C++物件模型?
C++物件模型可以概括為以下2部分:
- 1 語言中直接支援物件導向程式設計的部分
- 2 對於各種支援的底層實現機制
語言中直接支援物件導向程式設計的部分,如建構函式、解構函式、虛函數、繼承(單繼承、多繼承、虛繼承)、多態等等,這也是組裡其他同學之前分享過的內容。第一部分這裡我簡單過一下,重點在底層實現機制。
在c語言中,“資料”和“處理資料的操作(函數)”是分開來聲明的,也就是說,語言本身並沒有支援“資料和函數”之間的關聯性。在c++中,通過抽象資料類型(abstract data type,ADT),在類中定義資料和函數,來實現資料和函數直接的綁定。
概括來說,在C++類中有兩種成員資料:static、nonstatic;三種成員函數:static、nonstatic、virtual。
如下面的Base類定義:
#pragma once#include<iostream>using namespace std;class Base{public: Base(int); virtual ~Base(void); int getIBase() const; static int instanceCount(); virtual void print() const; protected: int iBase; static int count;};
Base類在機器中我們如何構建出各種成員資料和成員函數的呢?
基本C++物件模型
在介紹C++使用的物件模型之前,介紹2種物件模型:簡單物件模型(a simple object model)、表格驅動物件模型(a table-driven object model)。
簡單物件模型(a simple object model)
所有的成員佔用相同的空間(跟成員類型無關),對象只是維護了一個包含成員指標的一個表。表中放的是成員的地址,無論上成員變數還是函數,都是這樣處理。對象並沒有直接儲存成員而是儲存了成員的指標。
http://www.cnblogs.com/skynet/p/3343726.html
C++物件模型