原创 模板與標準模板庫

模板參數 模板參數分爲類型參數和非類型參數。類型參數代表的是一個基本類型或用戶自定義的類型,而非類型參數代表一個常量。 每個參數前面都必須有關鍵字typename或者class,形式爲<typename  typeparameter>或

原创 C++虛函數與動態聯編

虛調用的幾種具體情形 虛調用是相對於實調用而言的,它的本質是動態聯編(後面我們會講到)。 實調用:在發生函數調用的時候,如果函數的地址是在編譯階段確定的,就是實調用。反之,函數的入口地址要在運行時通過查 詢虛函數表的方式獲得,就是虛調用

原创 流類庫與輸入輸出

IO流 輸入輸出(IO)是指計算機同任何外部設備之間的數據傳遞。數據可以按“記錄”(或稱“數據塊”)的方式傳遞,也可以按“流”的方式 傳遞。 什麼是記錄?記錄是指有着內部結構的數據塊,記錄內部除了有需要處理的實際數據之外,還可能包含附加

原创 win32程序運行原理

win32程序運行原理 cpu的保護模式和windows系統 80386處理器有3種工作模式:實模式、保護模式、虛擬86模式。實模式和虛擬86模式是爲了8086處理器兼容而設置的。保護模 式是80386處理器的主要工作模式,保護主要是對

原创 框架程序基礎

框架程序的狀態信息 對於應用程序來說,有許多的狀態需要維護:如模塊狀態、線程狀態等。 模塊的概念:每一個被加載到內存中的文件成爲一個模塊。一般進程是由多個模塊組成的,通常應用程序都是通過模塊句柄來訪問進 程中的模塊。事實上,模塊的句柄的值

原创 C++STL學習筆記

C++STL泛型編程 ANSI C++中包含了一個C++ STL(Standard Template Library),即C++標準模板庫,又稱C++泛型庫,它在std命名空間中定義了常 用的數據結構和算法,使用起來很方便。 STL提供三

原创 windows圖像界面

瞭解窗口 每個GUI應用程序至少創建一個窗口,稱爲主窗口,它作爲用戶與應用程序間的主要界面來提供服務。應用程序的主窗口包括標題欄、 菜單來、windows系統菜單、最小和最大化按鈕、關閉按鈕、可改變大小的邊框、垂直和水平滾動條。應用程序必

原创 函數對象

函數對象\ 函數對象有三種類型:關係、邏輯、運算。爲使用函數對象,應包含<functional>頭文件。 想了解C++中定義的函數對象,看這個鏈接:http://msdn.microsoft.com/zh-cn/library/vstud

原创 輸入輸出迭代子的用法

輸入輸出迭代子 可以將標準輸入對象cin組裝成輸入流迭代子(istream_iterator),也可以將標準輸出對象組裝成輸出流迭代子(ostream_iterator), 以此來完成輸入輸出的操作。 輸入流迭代器: 定義方法:istr

原创 框架中的窗口

CWnd類 (CWnd 類是類庫的核心) 在類的體系結構中,框架程序提供了CWnd類來封裝窗口的HWND句柄,即使用CWnd類來管理窗口的對象,這包括窗口的創建和銷 毀、窗口的一般行爲和窗口所接收的消息。 CCmdTarget類: 爲了使

原创 typename的用法

typename的用法 很多人都會以爲typename和class的作用是一樣的,事實不然,typename還有另外一個用途:將某個帶作用域的標識符顯式地 說明爲類型,這在類型之間具有依賴關係的情況下是經常要用到的。不好理解,先看個例

原创 win32程序的執行單元

win32程序的執行單元 代碼的執行單元 ---- 線程 CreateProcess函數創建了進程,同時也創建了進程的主線程。系統中的每個進程都至少有一個線程。 多線程 創建新的線程函數:CreateThread() 等待線程運行結束:W

原创 STL算法

STL算法 STL提供了大概80種算法,可以分爲4類: 1.非修改性算法:這類算法不改變容器中的內容,只是從容器獲取信息。 2.修改性算法:  這類算法通過插入、刪除、重排等操作改變容器包含的元素,以及修改元素的值。 3.數值算法: 數值

原创 獲取文件信息

獲取文件信息 C++標準庫提供了對文件內容處理的支持,但並不直接對文件基本信息的獲取和修改。所以,獲取文件的基本可以藉助於C庫中 定義的結構和函數。 在<sys/stat.h>頭文件中,定義了一個結構stat,它是用來描述文件元數據結構

原创 二進制文件的IO操作

二進制文件的IO操作 習慣上,把非文本文件叫做二進制文件,實際上,所有的文件都是按照二進制存儲 的。文本文件中存放的大部分是可見字符,加 上少許控制字符;而二進制文件則可以包含任何字符和數據。二進制文件的輸入輸出不能用插入和提取操作符(