第9章 程式設計工作的簡化

2021-05-27 18:59:28 字數 1248 閱讀 4396

第9章 程式設計工作的簡化

1、客戶端的簡化:可使用智慧型介面指標和c++包裝類。

2、智慧型介面指標:像常規介面指標一樣訪問元件,將引用計數等細節隱藏起來,並且當程式的執行離開了智慧型介面指標的作用於之後,相應的介面將被釋放掉。不適合封裝某個介面或介面集。智慧型介面指標同元件的聚合類似。

3、c++包裝類:對介面進行封裝。包裝類最佳的一些特性在於它們可以利用c++的一些特性,如過載等。包裝類實際上同元件的包容類似。

5、同智慧型指標不同的是:

(1)不論包裝類是否要改變介面的行為,它都必須重新實現它所包裝的介面中的所有成員。

(2)包裝類可以在呼叫介面成員函式前後加上新的**。

6、伺服器端的簡化:未知介面基類cunknown和類廠基類cfactory。

7、使用cunknown和cfactory來編寫元件的步驟:

(a)編寫實現元件的類。

(1)可以從cunknown或其他從cunknown派生的類派生出待實現的元件。

(2)使用declare_iunknown巨集來實現**未知介面。

(3)在元件的建構函式中初始化cunknown。

(4)實現nondelegatingqueryinte***ce,在其中加入此元件支援而其他基類不支援的介面。對於那些元件所不支援的介面,可呼叫相應的基類。

(5)若需要在構造了元件之後進行其他一些初始化處理,可過載init函式,如此時可建立被包容及被聚合的元件。

(6)若需要在元件被刪除之前進行其他一些情理工作,可過載finalrelease函式,如此時可以釋放那些指向被包容或聚合的元件的指標。

(7)給元件實現乙個靜態的createinstance函式。

(8)實現元件支援的那些介面。

(b)對於待放到同dll種的其他元件,重複上面的步驟(a)。

(c)編寫類廠

(1)建立乙個檔案,以包含全域性cfactorydata陣列g_factorydataarray。

(2)定義g_factorydataarray陣列並用dll中提供的所有元件的資訊填充此元件。

(3)定義變數g_cfactorydataentries,其中包含有陣列g_factorydataarray中元件的個數。

(d)編寫乙個定義dll入口點的def檔案。

(e)將上面所編寫的**同cunknown.cpp和cfactory.cpp一塊編譯鏈結。

8、使用智慧型介面指標來編寫客戶端和cunknown、cfactory來編寫元件的示例**:

csdn我的資源中insidecom\chap09***。

第15章 物件導向程式設計 9

15.4.3 複製控制和繼承 派生類也可以使用合成複製控制成員。合成操作對物件的基類部分連同派生部分的成員一起進行複製 賦值或撤銷,使用基類的複製建構函式 賦值操作符或析構函式對基類部分進行複製 賦值或撤銷。只包含類型別或內建型別資料成員 不含指標的類一般可以使用合成操作,複製 賦值或撤銷這樣的成員...

C primer plus第9章程式設計練習答案

程式設計練習答案是我學習過程中所敲,作為乙個學渣,答案是以完成習題和易理解為導向,很少有一些五彩繽紛的演算法。程式僅作為交流,如有錯誤與不足還請指出。9.11.1 include stdio.h double min double x,double y intmain void 片9.11.2 in...

第9章 引用

為了列印出特殊字元,我們需要通過使用反斜槓來引用它們。下面是總結的特殊字元 字元含義 使用者的主目錄 命令替換 注釋變數引用 把任務放到後台執行 萬用字元萬用字元 在子shell中執行 引用後面的乙個字元 管道指定乙個字符集的萬用字元 建立乙個命令塊 命令分隔符 單引號引用字元 雙引號引用字元 標準...