原创 設計模式之工廠方法模式

工廠方法模式   1. 簡單工廠模式: class operFactory { public: static Operation *createOperation(char c) { switch(c) { case '+

原创 #define宏定義詳解

#define宏定義 1.常規用法—無參宏 #define PI 3.1415926 #define EN 1e5//定義指數1*10e5; cout<<PI<<endl;//默認位有效數字3.14159 2.使用參數 (1)不使用括號

原创 設計模式之總結

面向對象-編程   1. 面向對象編程方法具有的四個基本原則: 抽象、封裝、繼承、多態 2.設計模式之六大設計原則: 單一職責原則、開放封閉、依賴倒轉、里氏代換原則、合成聚合、迪米特 3.設計模式分類: (1)創建型模式:單例、工廠方

原创 設計模式之里氏代換原則

里氏代換原則   問題由來: 有一功能P1,由類A完成。現需要將功能P1進行擴展,擴展後的功能爲P,其中P由原有功能P1與新功能P2組成。新功能P由類A的子類B來完成,則子類B在完成新功能P2的同時,有可能會導致原有功能P1發生故障。 解

原创 設計模式之合成複用原則

1.合成/聚合複用原則: 儘量優先使用合成/聚合,儘量不要使用類繼承。盲目使用繼承會造成麻煩。 所以在使用繼承時,一定要在是“Is-a”的關係時,再考慮使用。手機軟件顯然不是一個,即不是a,所以不能從手機品牌向下繼承。如下圖是不對的。

原创 sprintf函數的用法

Sprintf函數的用法:   1.該函數包含在stdio.h的頭文件中,使用時需要加入:#include <stdio.h> 2.sprintf與printf函數的區別:二者功能相似,但是sprintf函數打印到字符串中,而printf

原创 設計模式之命令模式

命令模式 注意:關於UML圖的講解。 依賴:命令類依賴烤肉串者類;需要在命令抽象接口類加入烤肉串者的成員變量或者是在成員函數中作爲輸入參數; class Barbecuer { public: void bakeMutton()

原创 二維數組定義

二維數組定義   1. 方法一 int **a=new int *[m]; for(int i=0;i<m;i++) a[i]=new int[n]; 2. 方法二 int *a=new int[m*n]; for(int i=

原创 memset函數的用法

memset函數的用法:   1.預備知識: 1個int佔4個字節,1個字節佔8bit(位),1個字節佔1個內存;   -1的二進制是1111 1111,而不是1000 0001,因爲負數在計算機中是以補碼形式存儲的。 -1的原碼:100

原创 getline函數的用法

一、getline函數的用法: getline只要一遇到換行符就結束讀取操作並返回結果,哪怕一開始輸入的是換行符也是如此。   C++中有兩個getline函數,一個是在string頭文件中:定義的是一個全局的函數, 函數聲明是:istr

原创 設計模式之解釋器模式

解釋器模式   1. 解釋器模式: 給定一個語言,定義它文法的一種表示,並定義一個解釋器,這個解釋器使用該表示來解釋語言中的句子。 如果一種特定類型的問題發生的頻率足夠高,那麼可能就值得將該問題的各個實例表述爲一個簡單語言中的句子。這樣就

原创 設計模式之備忘錄模式

 備忘錄模式 1. 備忘錄模式: 備忘錄:在不破壞封裝性的前提下,捕獲一個對象的內部狀態,並在該對象之外保存這個狀態。這樣以後就可將該對象恢復到原先保存的狀態。 2. 備忘錄模式解析: 適用場合? 比較適用於功能比較複雜的,但需要維護或

原创 設計模式之享元模式

享元模式 1. 享元模式: 運用共享技術有效地支持大量細粒度的對象。   享元模式可以避免大量非常相似類的開銷。在程序設計中,有時需要生成大量細粒度的類實例來表示數據。如果能發現這些實例除了幾個參數外基本上都是相同的,有時就能夠大幅度的

原创 設計模式之橋接模式--合成複用原則

橋接模式 問題: 對象的繼承關係是在編譯時就定義好了,所以無法在運行時改變從父類繼承的實現。子類的實現與它的父類有緊密的依賴關係,以至於父類實現中的任何變化必然會導致子類發生變化。當你需要複用子類時,如果繼承下來的實現不適合解決新問題,則

原创 設計模式之中介者模式

中介者模式   1. 中介者模式: 用一箇中介對象來封裝一系列的對象交互。中介者使各對象不需要顯示的相互引用,從而使其耦合鬆散。 優缺點: 中介者模式很容易在系統中應用,也很容易誤用。當系統出現了‘多對多’交互複雜的對象羣時,不要急於使用