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

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