在C++的設計中關鍵的問題總是與類型、歧義性、訪問控制等有關。而不是那些語法方面的問題。
對象布局模型派生類的實現也就是簡單的將基類的成員和派生類的成員并列放置。例如:
給定了,
?
class?A{
int?a;
public:
/*member?function*/
};
class?B:public?A{
int?b;
public:
/*member?function*/
};
對類B的一個對象采用一個結構來表示:

sturct?B
{/**//*generated?c?code*/
int?a;
int?b;
};?
1、基成員和派生成員之間的名字沖突由編譯器賦于互不沖突的名字。
2、函數調用被處理得像根本沒有派生時那樣。
3、與C語言相比,這里時間或者空間沒有增加。
保護模型
類被做為保護單位。基本規則是不能自己授予自己訪問一個類的權力。只有放在類內的聲明可以。按照默認方式,所有信息都是私用的。
如果只想提繼承一個實現,那么就應私有派生。私有派生把基類留做實現細節。
公有派生將使派生類的使用方能訪問基類提供的所有界面。
C++的訪問控制是為了防止意外事件而不是為了防止欺騙。任何程序設計語言,只要他支持對原始存儲器的訪問,就會使數據處于開放的狀態。使所有有意按照某種違反數據項原本類型規則所描述的方式去觸動它的企圖都能實現。
保護系統的職責就是保證所有違反類型系統的操作都只能顯式的進行。并且減少這種操作的必要性。???
存儲分配和構造函樹
c語言里對象有三種方式分配:
1、堆棧上(在自動存儲區)。
2、在固定的地址。
3、在自由空間(在堆里,或者說在動態空間)。
C語言里,在自由空間分配一個對象時只涉及到調用一個分配函樹。例如:
monitor?*?p?=?(monitor?*)malloc(sizeof(?monitor));這顯然無法保證會調用構造函樹。因此C++引入了一個運算賦,以便保證分配和初始化都能完成。
monitor?*?p?=?new?monitor;delete 被引入,做為new的對應物。就像free做為malloc的對應物。