第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中執行 引用後面的乙個字元 管道指定乙個字符集的萬用字元 建立乙個命令塊 命令分隔符 單引號引用字元 雙引號引用字元 標準...