繼承時有幾點重要的注意事項,例如建構、解構的順序、方式、動態記憶體配置等都是需要注意的地方。
2010年8月30日 星期一
pure virtual function 與 abstract base class
有些時後會發生一種情況,我們必須創立許多類似的類別,而這些類別必須有某些相同且必要的條件,同樣以遊戲為例,例如資深工程師制訂了 NPC 的規格,各工程師照著規格實作遊戲企劃人員構想的各種 NPC 這種情況可以用到 virtual function 來解決各衍生類別的同名異式,但無法要求衍生類別一定要實作某些類別的內容,這時可以利用 "pure virtual function(純虛擬函式)" 例如:
2010年8月25日 星期三
polymorphic 與 virtual關鍵字
物件導向設計中有一項精華就是 polymorphic(同名異式),以 MFC 為例,每個元件其實最底層都是 CWnd (視窗),CButton 與 CEdit都繼承了 CWnd,兩都也都有 SetWindowText(),但 CButton 會顯示在按鍵的中間,CEdit 會顯示在框框中,這就是 polymorphic 的表現。
2010年8月20日 星期五
類別的靜態成員與自建簡易函式庫
有時後我們常常會寫一些 function,這些 function 在寫不同專案時常常要 copy 過去,若這些 function 與流程無關,或是可以把相關的值提取出來做為參數,那何不設計成一個自己使用的程式庫類別咧,
template 樣板函式
若我們要寫一個交換兩個值的 function,可能吃整數、浮點數、字串、該怎麼辦呢?最簡單的方法就是用 overloading 寫好幾個,另一種方法就是寫樣板函式請前置處理器幫忙。
2010年8月19日 星期四
operator overloading
operator 即是運算子,在利用 C++ 編寫程式時,operator overloading 是很常用到的,例如果我們自己實作了一個類別,一個漂亮的 ComboBox,我們可以在這個 CComboBox 中加入一條函式
const 與 volatile 修飾字
const 即是常數,即是宣當時賦值後只能讀取,無法改寫的數,很多初學者只知道這可以宣告無法改變的變數,但又莫名奇妙不知道實質的意義,不要改變這種事不就自己知道就好了嗎?為什麼要刻意在前面加上 const 來修飾呢?小的之前的想法就是這樣,讀的書多了才發現真正的用處在哪。
2010年8月18日 星期三
CString.ReverseFind() 與 Find() 的區別
CString 類別中有一些好用的 Method,有一個名為 Find() 的 Method 即是其中一個,此函式會回傳找到參數的索引位置,索引以 0 開始計算,若沒找到就會回傳 -1
利用 Event 定時處理某些事情
在軟體流程中,常常需要在固定一段時間後去做某件事,例如股市看盤軟體,每1分鐘要更新一次走勢圖,包括交易量、成交金額等資訊,初心者經常會使用 SetTimer() 來做這種事,但 SetTimer 這種事只存在於視窗中,例如 CWnd、CDialog 等等視窗。
標籤:
cpp,
mfc,
windows api
2010年8月17日 星期二
Thread 常用的同步方式
有時後我們會使用 Thread 來在背景做一些事,僅僅是為了不讓畫面被 main thread 卡住,若我們需要等待 thread 做完事才處理接下來的動作,可以使用以下 Windows API
標籤:
cpp,
mfc,
windows api
Multi Thread 下的 function 設計條件
在開發 Multi Thread 的軟體時,所有可能被 Thread 呼叫的 function 都要盡量設計成 Reentrant,這可以提供最安全的執行環境與結果。
專案轉換常發生的 qedit.h 編譯問題
有時新的 IDE 工具上市時,為了配合某些流程,必須將舊的開發環境轉至新的開發環境,又或網路上下載了 VS2003 的範例,苦於自己只有 VS2005 而必須轉換,這種狀況就常常遇到一些前置處理器與編譯的惱人錯誤…
使用 DXSDK 發生的 __ptr64 編譯問題
有時後編譯 DirectShow Sample 中的 BaseClasses 時會出現__ptr64相關的錯誤訊息,使用此 Project 有兩種方式,第一是直接 Include 完整的 Sample 目錄,例如 C:\DXSDK\Samples\C++\DirectShow\BaseClasses
標籤:
direct x,
visual studio
2010年8月16日 星期一
Multi Thread 常用的安全控制
Thread 有至少 3 種狀態供我們利用,分別為
1. Running - 正在佔用CPU執行中
2. Ready - 可立即執行的狀態,但CPU仍被佔用
3. Waiting - 等待事件
1. Running - 正在佔用CPU執行中
2. Ready - 可立即執行的狀態,但CPU仍被佔用
3. Waiting - 等待事件
標籤:
cpp,
mfc,
windows api
2010年8月15日 星期日
學習中…
只是拿來做一些個人筆記…好讓自己在各處都可以查到曾經整理過的資料…若您正好需要這裡的某些資料…註明出處後就直接取走吧…
筆記內容大部份都是關於寫作客戶端程式的一些經驗或其他地方看到的知識…內容不一定是完全正確的…而是我所理解的認知…若發現有誤請您指教…小的會非常感激…
筆記內容大部份都是關於寫作客戶端程式的一些經驗或其他地方看到的知識…內容不一定是完全正確的…而是我所理解的認知…若發現有誤請您指教…小的會非常感激…
訂閱:
文章 (Atom)