C++基礎(chǔ)1:需要了解的基礎(chǔ)概念

1.windows api(Win32 API)

【使用VS,其頭文件在C:\Program Files\Microsoft SDKs\Windows\v7.0A\Include】WIN32 API也就是Microsoft Windows 32位平臺(tái)的應(yīng)用程序編程接口撑柔。我們對(duì)待API函數(shù)不必刻意去研究每一個(gè)函數(shù)的用法瘸爽,那也是不現(xiàn)實(shí)的(能用得到的API函數(shù)有幾千個(gè)呢)。正如某位大蝦所說:API不要去學(xué)铅忿,在需要的時(shí)候去查API幫助就足夠了剪决。但是,許多API函數(shù)令人難以理解檀训,易于誤用柑潦,還會(huì)導(dǎo)致出錯(cuò),這一切都阻礙了它的推廣峻凫。
windows sdk:微軟每推出一個(gè)重要的windows版本渗鬼,一般都會(huì)同時(shí)推出一個(gè)SDK(Software Development Kit)。SDK包含了開發(fā)該windows版本所需的windows函數(shù)和常數(shù)定義荧琼、API函數(shù)說明文檔乍钻、相關(guān)工具和示例。SDK一般使用C語言铭腕,但不包括編譯器银择。高版本VC++包括了SDK所有的頭文件、幫助累舷、示例和工具浩考,不需要再安裝SDK。

2.c標(biāo)準(zhǔn)函數(shù)庫(kù)

【使用VS被盈,其頭文件在C:\Program Files\Microsoft Visual Studio 10.0\VC\include】使用C函數(shù)庫(kù)的時(shí)候只需要包含#include頭文件就能使用

3.c++標(biāo)準(zhǔn)函數(shù)庫(kù)

【使用VS析孽,其頭文件在C:\Program Files\Microsoft Visual Studio 10.0\VC\include】使用C++函數(shù)庫(kù)的時(shí)候不僅需要包含#include頭文件搭伤,而且還要引入命名空間,例如using namespace std;

4.MFC

【使用VS袜瞬,其頭文件在C:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include】是一個(gè)微軟公司提供的類庫(kù)(class libraries)怜俐,以C++類的形式封裝了Windows的API,并且包含一個(gè)應(yīng)用程序框架邓尤,以減少應(yīng)用程序開發(fā)人員的工作量拍鲤。其中包含的類包含大量Windows句柄封裝類和很多Windows的內(nèi)建控件和組件的封裝類

5.ATL

(開發(fā)COM和ActiveX組件的C++動(dòng)態(tài)模板庫(kù)):atl是微軟atl小組開發(fā)的,ATL是一個(gè)產(chǎn)生C++/COM代碼的框架汞扎,就如同C語言是一個(gè)產(chǎn)生匯編代碼的框架季稳。ATL又不同于MFC,它完全面向COM組件澈魄,其技術(shù)路線也不同于MFC景鼠,MFC使用的是C++中的繼承封裝痹扇、嵌套等常規(guī)技術(shù)铛漓,而ATL使用了C++中模板多繼承等高級(jí)技術(shù)鲫构,甚至還用到了STL浓恶。所以學(xué)習(xí)和使用ATL要求我們必須熟悉這些C++高級(jí)特性。另一方面芬迄,ATL結(jié)構(gòu)完全針對(duì)COM中的諸多規(guī)范问顷,這就要求使用人員必須非常了解COM規(guī)范昂秃,才有可能真正把ATL用好
誕生原因:Microsoft公司在推出COM SDK以后禀梳,為簡(jiǎn)化COM編程,提高開發(fā)效率肠骆,采取了許多方案算途,特別是在MFC(Microsoft Foundation Class)中加入了對(duì)COM和OLE的支持。但是隨著Internet的發(fā)展蚀腿,分布式的組件技術(shù)要求COM組件能夠在網(wǎng)絡(luò)上傳輸嘴瓤,而又盡量節(jié)約寶貴的網(wǎng)絡(luò)帶寬資源。采用MFC開發(fā)的COM組件由于種種限制不能很好地滿足這種需求莉钙,因此Microsoft在1995年又推出了一種全新的COM開發(fā)工具ATL廓脆。
在ATL產(chǎn)生以前,開發(fā)COM組件的方法主要有兩種:一是使用COM SDK直接開發(fā)COM組件磁玉,另一種方式是通過MFC提供的COM支持來實(shí)現(xiàn)停忿。
首先ATL的基本目標(biāo)就是使COM應(yīng)用開發(fā)盡可能地自動(dòng)化,這個(gè)基本目標(biāo)就決定了ATL只面向COM開發(fā)提供支持蚊伞。其次席赂,ATL因其采用了特定的基本實(shí)現(xiàn)技術(shù)吮铭,擺脫了大量冗余代碼,使用ATL開發(fā)出來的COM應(yīng)用的代碼簡(jiǎn)練高效颅停,即所謂的“Slim Code”谓晌。第三,ATL的各個(gè)版本對(duì)Microsoft的基于COM的各種新的組件技術(shù)如MTS癞揉、ASP等都有很好的支持纸肉,ATL對(duì)新技術(shù)的反應(yīng)速度大大快于MFC。ATL已經(jīng)成為Microsoft支持COM應(yīng)用開發(fā)的主要開發(fā)工具烧董,因此COM技術(shù)方面的新進(jìn)展在很短的時(shí)間內(nèi)都會(huì)在ATL中得到反映毁靶。這使開發(fā)者使用ATL進(jìn)行COM編程可以得到直接使用COMSDK編程同樣的靈活性和強(qiáng)大的功能。

6.WTL

(Windows Template Library):wtl是微軟atl小組開發(fā)的逊移,誕生原因:在ATL出現(xiàn)的時(shí)候预吆,一些部分COM的編程人員開始覺得開發(fā)COM運(yùn)用是一種快樂,因?yàn)槭褂盟芊奖愕亻_發(fā)小規(guī)模的COM組件胳泉,但好景不長(zhǎng)拐叉,現(xiàn)實(shí)的COM組件是包羅相當(dāng)廣泛的,特別當(dāng)它們準(zhǔn)備使用窗口控件扇商,發(fā)現(xiàn)ATL提供的相當(dāng)?shù)南∩俜锸荨R虼薓icrosoft推出了半成品與沒有技術(shù)支持的WTL,這也是WTL誕生的原因案铺。主要原因是用原始的 WIN32 API 編寫漂亮的用戶界面工作量大蔬芥,繁雜。MFC 雖然提供了一套很好的封裝控汉,但是也不是很容易消化和使用笔诵,特別是各個(gè)MFC 類之間耦合很緊,要用好 MFC 就要理解很多 MFC 內(nèi)在的運(yùn)行機(jī)制(有人說 MFC 的封裝是“白盒”封裝姑子,呵呵)乎婿。WTL 利用 C++ 模版的高級(jí)功能,提供很聯(lián)系很松散的“獨(dú)立”的類庫(kù)街佑,使用起來比較方便谢翎,而且代碼體積小,不必為了學(xué)習(xí)某個(gè)類必須學(xué)習(xí)一大堆相關(guān)的類沐旨。
特點(diǎn):1.模板化森逮,因此有較小的代碼量。例如磁携,一個(gè)簡(jiǎn)單的“hello world”SDI應(yīng)用程序褒侧,基于WTL的程序只有24KB,而MFC靜態(tài)連接結(jié)果是440KB,MFC動(dòng)態(tài)連接的結(jié)果是24KB+1MB璃搜。 2.無太多相關(guān)性拖吼,并且可以自由地和SDK代碼直接混合。 3.不會(huì)強(qiáng)迫使用特定的應(yīng)用程序模型这吻,尤其相對(duì)于MFC的應(yīng)用程序框架吊档。
WTL類包括:
標(biāo)準(zhǔn)控制(編輯框,列表框唾糯,按鈕等等)
公共控制(包括列表視圖怠硼,樹形視圖,進(jìn)度條移怯,微調(diào)按鈕)
IE控制(rebar香璃,平面滾動(dòng)條,日歷等等)
命令條舟误,菜單葡秒,和更新UI類
公共對(duì)話框
屬性單和頁類
框架窗口,MDI框架和子框架嵌溢,分隔條眯牧,可滾動(dòng)的窗口
設(shè)備環(huán)境(DC)和GDI對(duì)象類(筆、刷子赖草、位圖等)
打印機(jī)及其信息和設(shè)備模式類
實(shí)用工具類:包括CPoint, CRect, CSize, 和CString類

7.STL(標(biāo)準(zhǔn)C++程序開發(fā)的模板庫(kù))

STL是惠普實(shí)驗(yàn)室開發(fā)的一系列軟件的統(tǒng)稱学少,作為ANSI/ISOC++的一部分,已經(jīng)被C++標(biāo)準(zhǔn)委員會(huì)正式采納秧骑,STL的一個(gè)重要特點(diǎn)是數(shù)據(jù)結(jié)構(gòu)和算法的分離版确,這使其非常通用。另一個(gè)重要特性為不是面向?qū)ο蟮暮跽郏瑸榱藢?shí)現(xiàn)通用性绒疗。

STL有6大組件:

algorithm(算法)、Container(容器)和iterator(迭代器)笆檀,function object(函數(shù)對(duì)象)忌堂、adaptors(適配器)和allocator(記憶體配置器),其中最主要的是前三個(gè)組件盒至。從根本上說酗洒,STL是一些“容器”的集合,這些“容器”有list,vector,set,map等枷遂,STL也是算法和其他一些組件的集合樱衷。這里的“容器”和算法的集合指的是世界上很多聰明人很多年的杰作。

在C++標(biāo)準(zhǔn)中酒唉,STL被組織為下面的13個(gè)頭文件:<algorithm>矩桂、<deque>、<functional>痪伦、<iterator>侄榴、<vector>雹锣、<list>、<map>癞蚕、<memory>蕊爵、<numeric>、<queue>桦山、<set>攒射、<stack>和<utility>。
算法部分主要由頭文<algorithm>恒水,<numeric>和<functional>組成会放。
容器部分主要由頭文件<vector>,<list>,<deque>,<set>,<map>,<stack>和<queue>組成。
迭代器部分主要由頭文件<utility>,<iterator>和<memory>組成钉凌。
**STL的容器可以分為以下幾個(gè)大類: **
一:序列容器 有vector, list, deque, string.
二 : 關(guān)聯(lián)容器 有set, multiset, map, mulmap, hash_set, hash_map, hash_multiset, hash_multimap
三: 其他的雜項(xiàng) 有stack, queue, valarray, bitset
STL的目的是標(biāo)準(zhǔn)化組件咧最,這樣你就不用重新開發(fā)它們了。你可以僅僅使用這些現(xiàn)成的組件御雕。STL現(xiàn)在是C++的一部分窗市,因此不用額外安裝什麼。
STL算法是標(biāo)準(zhǔn)算法饮笛,我們可以把它們應(yīng)用在那些容器中的對(duì)象上咨察。這些算法都有很著名的執(zhí)行特性。它們可以給對(duì)象排序福青,刪除它們摄狱,給它們記數(shù),比較无午,找出特殊的對(duì)象媒役,把它們合并到另一個(gè)容器中,以及執(zhí)行其他有用的操作

8.afx(微軟AFX小組開發(fā)的)

以afx開頭的函數(shù)不能說是MFC的全局函數(shù)宪迟,而是MFC的類函數(shù)酣衷。當(dāng)初這個(gè)小組打算建立一個(gè)可以跨Linux和windows平臺(tái)的設(shè)計(jì)軟件,結(jié)果失敗了次泽,遺留了大量的函數(shù)以afx命名穿仪,最終用類的概念建立了MFC的框架,所以現(xiàn)在MFC之中有很多afx函數(shù)意荤,這些函數(shù)可以用API函數(shù)替代啊片。AFX 小組預(yù)期MFC 的使用者不可能人人皆為C++ 專家,所以他們并沒有采用所有的C++高階性質(zhì)(例如多重繼承)玖像。許多「麻煩」但「幾乎一成不變」的Windows程序動(dòng)作都被隱藏在MFC 類別之中紫谷, 例如WinMain、RegisterClass、Window Procedure 等等等笤昨。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末祖驱,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子瞒窒,更是在濱河造成了極大的恐慌羹膳,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,509評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件根竿,死亡現(xiàn)場(chǎng)離奇詭異陵像,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)寇壳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門醒颖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人壳炎,你說我怎么就攤上這事泞歉。” “怎么了匿辩?”我有些...
    開封第一講書人閱讀 163,875評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵腰耙,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我铲球,道長(zhǎng)挺庞,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,441評(píng)論 1 293
  • 正文 為了忘掉前任稼病,我火速辦了婚禮选侨,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘然走。我一直安慰自己援制,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,488評(píng)論 6 392
  • 文/花漫 我一把揭開白布芍瑞。 她就那樣靜靜地躺著晨仑,像睡著了一般。 火紅的嫁衣襯著肌膚如雪拆檬。 梳的紋絲不亂的頭發(fā)上洪己,一...
    開封第一講書人閱讀 51,365評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音秩仆,去河邊找鬼码泛。 笑死猾封,一個(gè)胖子當(dāng)著我的面吹牛澄耍,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 40,190評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼齐莲,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼痢站!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起选酗,我...
    開封第一講書人閱讀 39,062評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤阵难,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后芒填,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體呜叫,經(jīng)...
    沈念sama閱讀 45,500評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,706評(píng)論 3 335
  • 正文 我和宋清朗相戀三年殿衰,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了朱庆。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,834評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡闷祥,死狀恐怖娱颊,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情凯砍,我是刑警寧澤箱硕,帶...
    沈念sama閱讀 35,559評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站悟衩,受9級(jí)特大地震影響剧罩,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜座泳,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,167評(píng)論 3 328
  • 文/蒙蒙 一斑响、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧钳榨,春花似錦舰罚、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至饼齿,卻和暖如春饲漾,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背缕溉。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工考传, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人证鸥。 一個(gè)月前我還...
    沈念sama閱讀 47,958評(píng)論 2 370
  • 正文 我出身青樓僚楞,卻偏偏與公主長(zhǎng)得像勤晚,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子泉褐,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,779評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容