關(guān)于“C++面向?qū)ο蟾呒壘幊躺稀钡谌巫鳂I(yè)

組合與繼承(類與類之間三大關(guān)系)

復合(composition)

復合表示has-a洪乍,表示一個類里含有另一個類的對象(A擁有B)炬太,也稱包含關(guān)系谣妻。



template

class queue

{

...

protected:

deque c;? //底層容器

public:

bool empty() const { return c.empty();}//下列函數(shù)完全利用c類的操作函數(shù)完成

size_type size() const { return c.size();}

reference front() { return c.front();}

reference back() { return c.back();}

};

復合關(guān)系下的構(gòu)造和析構(gòu)

構(gòu)造:構(gòu)造是由內(nèi)而外胞锰,就像打包裹们颜,從里往外。container的構(gòu)造函數(shù)首先調(diào)用components的default構(gòu)造函數(shù)衅澈,然后才執(zhí)行自己键菱。(紅色部分是編譯器自動完成的)

Container::Container(...):Component(){...};

析構(gòu):析構(gòu)是由外而內(nèi),就像拆包裹矾麻,從外往里纱耻。Container的析構(gòu)函數(shù)首先執(zhí)行自己,然后才調(diào)用components的析構(gòu)函數(shù)险耀。

Container::~Container(){~Component();}

委托(delegation)composition by reference



委托:表示一個類里含有另一個類的指針或者引用對象弄喘。(生命不同,前面composition是一起創(chuàng)建一起結(jié)束甩牺,這里的delegation先創(chuàng)建string再等到需要時創(chuàng)建string)

class String

{

private:

StringRep* rep;? //pimml? handle and body 編譯防火墻

};

編譯防火墻:一個類提供接口蘑志,具體實現(xiàn)由另一個類來完成,兩個類為委托關(guān)系,后一個類改變內(nèi)容不影響前面(接口)急但。假如多個委托關(guān)系澎媒,A想改變內(nèi)容,B波桩、C共享以前的東西戒努,(copy on write )給一個副本寫。

繼承(inheritance)

繼承表示is-a镐躲,表示派生類對象也可以是一個基對象储玫,可以對基類對象執(zhí)行的任何操作,也可以對派生類對象執(zhí)行萤皂。(C++ primer plus)? 小指向大撒穷,子類指向父類



struct _List_node_base

{

_List_node_base* _M_next;

_List_node_base* _M_prev;

};

template

struct _List_node

: public _List_node_base{_Tp _M_data;};

C++有三種繼承方式:共有繼承(使用最多)、保護繼承裆熙、私有繼承端礼。(java只有共有繼承)

繼承關(guān)系下的構(gòu)造和析構(gòu)

構(gòu)造:繼承關(guān)系下的構(gòu)造由內(nèi)而外。Derived的構(gòu)造函數(shù)首先調(diào)用Base的default構(gòu)造函數(shù)入录,然后才執(zhí)行自己蛤奥。

析構(gòu):析構(gòu)由外而內(nèi)。Derived的析構(gòu)函數(shù)首先執(zhí)行自己纷跛,然后才調(diào)用Base的析構(gòu)函數(shù)喻括。

虛函數(shù)與多態(tài)

虛函數(shù)

任何成員函數(shù)前加上virtual后都稱為虛函數(shù)

non-virtual函數(shù):非虛函數(shù),不希望這個函數(shù)子類重新定義(override贫奠,復習)它。

virtual函數(shù):虛函數(shù)望蜡,你希望子類重新定義唤崭,而且父類中已經(jīng)默認定義過這個函數(shù)。

pure virtual函數(shù): 純虛函數(shù)脖律,你希望子類一定要重新定義且父類中并無默認定義谢肾。

例子如下:

class Shape

{

public:virtualvoid draw( ) const= 0;? //純虛函數(shù)virtualvoid error( const std::string& msg);? //虛函數(shù)

int objectID( ) const;? //非虛函數(shù)

...

};

class Rectangle: public Shape {...};

class Ellipse:public Shape{...};

Template Method

繼承+復合關(guān)系下的構(gòu)造和析構(gòu)

構(gòu)造由內(nèi)而外

Derived的構(gòu)造函數(shù)首先調(diào)用Base的default構(gòu)造函數(shù),然后調(diào)用component的default構(gòu)造函數(shù)小泉。

析構(gòu)由外而內(nèi)

Derived的析構(gòu)函數(shù)首先執(zhí)行自己芦疏,然后調(diào)用component的析構(gòu)函數(shù),然后調(diào)用Base的析構(gòu)函數(shù)微姊。




最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末酸茴,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子兢交,更是在濱河造成了極大的恐慌薪捍,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,539評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異酪穿,居然都是意外死亡凳干,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評論 3 396
  • 文/潘曉璐 我一進店門被济,熙熙樓的掌柜王于貴愁眉苦臉地迎上來救赐,“玉大人,你說我怎么就攤上這事只磷【幌欤” “怎么了?”我有些...
    開封第一講書人閱讀 165,871評論 0 356
  • 文/不壞的土叔 我叫張陵喳瓣,是天一觀的道長馋贤。 經(jīng)常有香客問我,道長畏陕,這世上最難降的妖魔是什么配乓? 我笑而不...
    開封第一講書人閱讀 58,963評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮惠毁,結(jié)果婚禮上犹芹,老公的妹妹穿的比我還像新娘。我一直安慰自己鞠绰,他們只是感情好腰埂,可當我...
    茶點故事閱讀 67,984評論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蜈膨,像睡著了一般屿笼。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上翁巍,一...
    開封第一講書人閱讀 51,763評論 1 307
  • 那天驴一,我揣著相機與錄音,去河邊找鬼灶壶。 笑死肝断,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的驰凛。 我是一名探鬼主播胸懈,決...
    沈念sama閱讀 40,468評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼恰响!你這毒婦竟也來了趣钱?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤渔隶,失蹤者是張志新(化名)和其女友劉穎羔挡,沒想到半個月后洁奈,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,850評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡绞灼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,002評論 3 338
  • 正文 我和宋清朗相戀三年利术,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片低矮。...
    茶點故事閱讀 40,144評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡印叁,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出军掂,到底是詐尸還是另有隱情轮蜕,我是刑警寧澤,帶...
    沈念sama閱讀 35,823評論 5 346
  • 正文 年R本政府宣布蝗锥,位于F島的核電站跃洛,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏终议。R本人自食惡果不足惜汇竭,卻給世界環(huán)境...
    茶點故事閱讀 41,483評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望穴张。 院中可真熱鬧细燎,春花似錦、人聲如沸皂甘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽偿枕。三九已至璧瞬,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間益老,已是汗流浹背彪蓬。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留捺萌,地道東北人。 一個月前我還...
    沈念sama閱讀 48,415評論 3 373
  • 正文 我出身青樓膘茎,卻偏偏與公主長得像桃纯,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子披坏,可洞房花燭夜當晚...
    茶點故事閱讀 45,092評論 2 355

推薦閱讀更多精彩內(nèi)容