原创 Effective C++ 26,27,28

26.當心潛在的二義性。 一些潛在的二義性的例子: class A{ public: A(const B&); }; class B{ public: operator A() const; }; void f(const A&);

原创 動態規劃 與兩道例題

現在要把這幾種常見的算法給理清弄明白了,要不然只能做個低級程序員了。 動態規劃DP是求解決策過程的最優化的數學方式。動態規劃一般分爲線性動規,區域動規,樹形動規,揹包動規。 動態規劃是一種方法,但不是一種算法,一般用於多決策中的最優化問

原创 Effective C++ 38-42

38.絕不要重新定義繼承而來的缺省參數值。 重新定義函數缺省參數值意味着重新定義函數,而非虛函數不能重新定義,所以將就考慮不能重新定義虛函數的缺省參數值的原因:虛函數是動態綁定的而缺省參數值是靜態綁定的。 靜態類型是指程序中聲明的類型,而

原创 Effective C++ 11-17

11.爲需要動態分配內存的類聲明一個拷貝構造函數和一個賦值操作符。 顯然,由於動態內存分配,絕對會有深淺拷貝的問題,要重寫拷貝構造函數,使其爲深拷貝,才能實現真正意義上的拷貝。這是我理解的關於要聲明拷貝構造函數的原因。 而對於賦值操作符,

原创 Effective C++ 49,50

49.熟悉標準庫。 C++標準庫很大。 首先標準庫中函數很多,爲了避免名字衝突,使用命名空間std。而之前的庫函數都存放於< .h>中,現在成爲僞標準庫。而不能直接將這些頭文件全部直接添加命名空間,標準委員會只能重新創建了不帶.h的頭文件

原创 Effective C++ 34

34.將文件間的編譯依賴性降到最低。 對於一個大型程序,其結構是錯綜複雜的,當你對一個類進行一些改動時,修改的不是接口,而是類的實現,即只是一些細節部分,但重新生成程序時,所有用到這個類的的文件都要重新編譯。這裏題目指的是這個意思。但實際

原创 Effective C++ 35,36,37

35.使公有繼承體現 “是一個” 的含義。 共有繼承意味着 “是一個”。如  class B:public A; 說明類型B的每一個對象都是一個類型A的對象,A比B具有更廣泛的概念,而B表示一個更特定的概念。 在C++中任何一個參數爲基類

原创 WinMain()主函數

int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hprevinstance, LPSTR lpcmdline, int ncmdshow) {

原创 Effective OC: 6. 7. 8

6. 理解 屬性 property 這一特性. 屬性來封裝對象中的數據,這些實例變量通過access方法來訪問,即 getter和setter.  編譯器會自動編寫getter與setter, 開發者可以通過點語法 dot syntax來

原创 創建一個窗口

用函數CreateWindow()或CreateWindowEx()來創建窗口(或任何其他類似於窗口的對象,如控件)。創建窗口時必須提供窗口類的文本

原创 事件處理程序WinProc

事件處理函數是一個回調函數,Windows在窗口中發生需要處理的事件時,在主時間循環中調用該函數。時間處理函數可處理任何想處理的事件,其他的事件傳遞

原创 設計模式的C++實現 24.簡單工廠模式

簡單工廠模式,又稱靜態工廠模式,屬於創造型模式,但又不是23中GOF設計模式之一。簡單工廠是由一個工廠對象決定創造出哪種產品類的實例。簡單工廠模式是工廠模式中最簡單實用的模式,可以理解爲是不同工廠模式的一個特殊實現。 簡單工廠通過傳入的參

原创 Effective C++ 29-33

29.避免返回內部數據的句柄。 即使聲明一個類的對象爲const,不能進行修改,在獲得其數據的句柄也就是地址的情況下,還是可以強行修改的。 class A{ public: int n; A(int x):n(x){} opera

原创 設計模式

設計模式 design pattern 是一套被反覆使用,多數人知曉,經過分類編目的,代碼設計經驗的總結。 使用設計模式是爲了可重用代碼,讓代碼更容易被他人理解。設計模式使編程代碼真正工程化。 可複用面向對象軟件系統,一般分爲兩個大類,應

原创 設計模式的C++實現 2.工廠模式

工廠模式,實例化對象,用工廠方法代替new操作。 工廠模式基本與簡單工廠模式差不多,簡單工廠中每次添加一個子類必須在工廠類中添加一個判斷分支,這違背了開閉原則。而工廠模式的解決方法是將簡單工廠中的每個判斷都生成一個工廠子類,工廠子類位於工