国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C++ 開發工程師 第三周筆記 boolan.com

2019-11-08 18:22:44
字體:
來源:轉載
供稿:網友

第三周

Composition(復合),has-a

圖形表示,實心菱形

這里queue功能完全由deque包裝實現,是adapter設計模式。

內存大小如下

Composition 復合關系下的構造和析構

構造由內而外 Container的構造函數首先調用Component的默認構造函數,然后才執行自己。 實際上編譯器類似如下操作: Container::Container(...): Component() { ... };

析構由外而內 Container的析構函數首先執行自己,然后才調用Component的析構函數。 Container::~Container(...) {... ~Component( );}

Delegation(委托) Composition by reference

其中包含一個指針。用空心菱形塊表示。

很有名 Handle/Body pimpl: pointer to implementation

所有的實現都在右邊,通過指針實現。好處是右邊的任何變動不影響左邊。編譯防火墻。

共享

如果內容一樣可以共享,使用引用計數器。其中一個的寫不能影響其他的。

Inheritance (繼承) , is-a

子類指向父類,空心三角形。

Inheritance 繼承下的構造和析構

base class 的 dtor 必須是 virtual, 否則會出現undefined behavior

構造由內而外,析構由外而內 Derived::Derived(...) : Base( ) {...};

Derived::~Derived(...) { ... ~Base( ) };

Inheritance 繼承 with virtual functions (虛函數)

繼承的函數實際上是繼承的函數調用權。

non-vitual 函數:你不希望derived class重新定義(override,復寫)它。 virtual 函數:你希望derived class重新定義(override,復寫)它,且你對它已有默認定義。 pure virtual 函數:你希望derived class一定要重新定義(override,復寫)它,你對它沒有默認定義。

Template Method

這里Serialize( )函數可以放到以后寫。MFC就是這樣。。。 Serialize使用this來調用。

Inheritance 和 Composition關系下的構造和析構函數

作業 看看誰先誰后

Delegation 委托 + Inheritance 繼承

可以做到類似如下效果

Subject里放的都是指針,其余從Observer繼承。 Subject提供注冊和注銷的函數,注冊即放到容器里。

Composite Composite容器 即要放PRimitive 又要放 Composite,于是讓Primitive和Composite均繼承Component。

add函數不能寫純虛函數,因為Primitive沒有add,繼承下來空函數。

Prototype 應對以后出現的新類,讓下面派生的子類都創建一個自己。

圖中下劃線代表靜態,- 代表private #代表protected,名字在前,類型在后。 子類里有一個靜態的自己,如_LSAT。 子類構造函數私有,將自己add到父類的容器中。 子類自己有clone函數,new 自己。 有兩個構造函數,當clone時,同樣會創建自己,調用構造函數,如果只有一個構造函數,那么又會把自己add到父類的容器中,所以寫一個帶參數的構造函數,這個參數根本用不到。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 正阳县| 扶绥县| 增城市| 溧水县| 台安县| 城固县| 荥经县| 徐水县| 都江堰市| 利津县| 舞钢市| 丰城市| 岳普湖县| 三门峡市| 吉安市| 孙吴县| 砚山县| 柳州市| 德清县| 贡嘎县| 临安市| 红桥区| 锦州市| 大关县| 昌平区| 当涂县| 万年县| 阜阳市| 阜宁县| 永州市| 宜章县| 盱眙县| 西林县| 水城县| 遂昌县| 五华县| 栖霞市| 濉溪县| 河北区| 白水县| 西峡县|