原创 不能被繼承的類49

題目描述:用C++設計一個不能被繼承的類,在C#中定義了關鍵字sealed,被sealed修飾的類不能被繼承。在JAVA中同樣也有關鍵字final表示一個類型不能被繼承。 解法一:把構造函數設爲私有成員 在C++中子類的構造函數

原创 C++11閉包函數:Lambda表達式的使用λ

C++11中的Lambda表達式用於定義並創建匿名的函數對象,以簡化編程工作。Lambda的語法形式如下: [函數對象參數] (操作符重載函數參數) mutable或exception聲明 -> 返回值類型 { …函數體…} 一

原创 C++設計模式淺識建造者模式

建造者模式(Builder):將一個複雜對象的構建與它的表示分離,使得同樣的構建過程可以創建不同的表示。 模式實現: class Builder; //產品 class Product{ public: void AddP

原创 C++設計模式淺識橋接模式

合成/聚合複用原則(CARP): 優先使用合成/聚合,而不是使用類繼承。 聚合表示一種弱的”擁有關係”,體現的是A對象可以包含B對象,但B對象不是A對象的一部分。 合成表示一種強的”擁有關係”,體現了嚴格的部分和整體的關係,部

原创 C++設計模式淺識解釋器模式

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

原创 C++設計模式淺識享元模式

享元模式(Flyweight):運用共享技術有效地支持大量細粒度的對象。 四個角色類: Flyweight享元類:所有具體享元類的超類或接口,通過這個接口,Flyweight可以接受並作用於外部狀態。 Flyweight享元工廠

原创 C++設計模式淺識組合模式

組合模式(Composite):將對象組合成樹形結構以表示‘部分-整體’的層次結構。組合模式使得用戶對單個對象和組合對象的使用具有一致性。 何時使用組合模式: 當你發現需求中是體現部分與整體層次的結構時,以及你希望用戶可以忽略組

原创 不用加減乘除做加法48

題目描述:寫一個函數,求兩個整數之和,要求在函數體內不能使用+、-、*、/ 四則運算符號。 解題思路: 使用位運算; 第一步相加不考慮進位,0加0、1加1的結果都是0;0加1、1加0的結果都是1,所以第一步是異或的結果; 第二步

原创 C++設計模式淺識狀態模式

狀態模式(State):當一個對象的內在狀態改變時允許改變其行爲,這個對象看起來像是改變了其類。 狀態模式主要解決的是當控制一個對象狀態轉換的條件表達式過於複雜時的情況。把狀態的判斷邏輯轉移到表示不同狀態的一系列類當中,可以把複

原创 C++設計模式淺識抽象工廠模式

抽象工廠模式(Abstract Factory):提供一個創建一系列相關或相互依賴對象的接口,而無需指定它們具體的類。 模式實現: //create ProductA class ProductA{ public: vir

原创 C++設計模式淺識中介者模式

中介者模式(Mediator):用一箇中介對象來封裝一系列的對象交互。中介者使各對象不需要顯式地交互引用,從而使耦合鬆散,而且可以獨立地改變它們之間的交互。 四個角色: 抽象中介者Mediator 具體中介者對象Concrete

原创 XML基礎學習

一、什麼是 XML? XML 指可擴展標記語言(EXtensible Markup Language) XML 是一種標記語言,很類似 HTML XML 的設計宗旨是傳輸數據,而非顯示數據 XML 標籤沒有被預定義

原创 C++設計模式淺識適配器模式

適配器模式(Adapter):將一個類的接口轉換成客戶希望的另外一個接口。Adapter模式使得原本由於接口不兼容而不能一起工作的那些類可以一起工作。 何時使用適配器模式: 兩個類所做的事情相同或相似,但是具有不同的接口時需要它

原创 C++設計模式淺識命令模式

命令模式(Command)將一個請求封裝爲一個對象,從而使你可用不同的請求對客戶進行參數化;對請求排隊或記錄請求日誌,以及支持可撤銷的操作。 測試用例: int main(){ Barbecuer boy; Ba

原创 C++設計模式淺識職責鏈模式

職責鏈模式(ChainOfResponsibility):使多個對象都有機會處理請求,從而避免請求的發送者和接收者之間的耦合關係。將這個對象連成一條鏈,並沿着這條鏈傳遞該請求,直到有一個對象處理它爲止。 職責鏈的好處: 當客戶提