原创 Effective C++讀書筆記---資源管理

所謂資源就是,一旦用了它,將來必須還給系統。如果不這樣,槽糕的事情就會發生。C++程序中最常用的資源就是動態分配內存,還包括文件描述器(file descriptors)、互斥鎖(mutex locks)、圖形界面中的字形和筆刷、數據庫連

原创 More Effective C++讀書筆記---異常

異常如果你需要一個方法,能夠通知不可被忽略的異常狀態,並且搜索棧空間以便找到異常處理代碼時,你還得確保局部對象的析構函數必須被調用,這時你就需要使用C++的異常處理九、條款9--使用析構函數防止資源泄漏1.ALA* pa = readAL

原创 More Effective C++讀書筆記---技巧

技巧 二十五、條款25--將構造函數和非成員函數虛擬化1.虛擬構造函數是指能夠根據輸入給它的數據的不同而建立不同類型的對象2.被派生類重定義的虛擬函數不用必須與基類的虛擬函數具有一樣的返回類型。如果函數的返回類型是一個指向基類的指針(或

原创 Effective C++讀書筆記---定製new和delete

多線程環境下的內存管理,遭受單線程系統不曾有過的挑戰。由於heap是一個可被改動的全局性次源,因此多線程系統充斥着發狂訪問這一類資源的race conditions(競速狀態)出現機會。四十九、條款49-瞭解new-handler的行爲

原创 Effective C++讀書筆記---繼承與面向對象設計

如果你瞭解C++各種特性的意義,你會發現,你對OOP的看法改變了。它不再是一項用來劃分語言特性的儀典,而是可以讓通過它說出你對軟件系統的想法。一旦你知道該通過它說些什麼,轉移至C++世界也就不再是可怕的高要求了三十二、條款32-確定你的p

原创 Effective C++讀書筆記---實現

大多數情況下,適當提出你的classes(和class templates)定義以及functions(和function templates)聲明,是花費最多心力的地方。一旦正確完成它們,相應的實現大多直截了當。儘管如此,還是有些東西需

原创 Effective C++讀書筆記---設計與聲明

所謂軟件設計,是“令軟件做出希望它做的事情”的步驟和做法,通常以頗爲一般性的構想開始,最終演變成十足的細節,以允許特殊接口的開發十八、條款18-讓接口容易被正確使用,不易被誤用1.首先必須考慮客戶可能做出什麼樣的錯誤2.明智而審慎地導入新

原创 More Effective C++讀書筆記---效率

效率在用C++寫出高效地程序之前,必須認識到C++本身絕對與你所遇到的任何性能上的總是無關。如果想寫出一個高效的C++程序,你必須首先能寫出一個高效的算法十六、條款16--牢記80-20準則(80-20 rule)1.80-20準備說的是

原创 Effective C++讀書筆記---模板與泛型編程

C++ template機制身自是一部完整的圖靈機(Turing-complete):它可以被用來計算任何可計算的值。於是導出了模板元編程(template metaprogramming),創建出“在C++編譯器內執行並於編譯完成時停止

原创 Effective C++讀書筆記---讓自己習慣C++

導讀1.做一個有“線程概念”的程序員一、條款01-視C++爲一個語言聯綁1.C++是個多重範型的語言(multiparadigm programming language),一個同時支持過程形式(procedural)、面向對象形式(ob

原创 初始化Direct3D

 初始化D3D: 一、獲得一個IDirect3D9接口指針。這個接口指針用於獲得物理設備的信息和創建一個IDirect3DDevice9接口 IDirect3D9 * Direct3DCreate9(   UINT SDKVersion 

原创 Effective C++讀書筆記---構造/析構/賦值運算

五、條款05-瞭解C++默默編寫並調用哪些函數1.class中,當C++處理過它之後,如果自己沒聲明任何函數,編譯器就會爲它聲明一個default構造函數、一個copy構造函數、一個copy assignment操作符和一個析構函數。惟有

原创 More Effective C++讀書筆記---基礎議題

pointers(指針)、references(引用)、casts(類型轉換)、arrays(數組)、constructors(構造)--再沒有比這些更基礎的議題了。幾乎最簡單的C++程序也會用到其中的大部分特性一、條款1--指針與引用的

原创 Effective C++讀書筆記---雜項討論

五十三、條款53-不要輕忽編譯器的警告1.嚴肅對待編譯器發出的警告消息。努力在你的編譯器的最高(最嚴苛)警告級別下爭取“無任何警告”的榮譽2.不要過度倚賴編譯器的報警能力,因爲不同的編譯器對待事情的態度並不相同。一旦移值到另一個編譯器上,

原创 More Effective C++讀書筆記---運算符

運算符重載,允許給予你的自定義類型有着和C++內建類型完全相樣的語法,更有甚者,它們允許你將強大的能量注入到運算符背後的函數體中。然而它也是很難駕馭的,單參數的構造函數和隱式類型轉換尤其棘手,因爲它們會被調用在沒有任何的源代碼顯示了這樣的