全面講析C++語言
C++語言對C語言進行了改革性的改進,分為兩個方面,一方面是面向?qū)ο?,另一個方面就是模板技術(shù),在下文中將對C++語言的種種特性進行全面的仔細(xì)研究,歡迎大家一起學(xué)習(xí)交流。
但是相信在將來也一定會加入這一功能),模板是C++中比較復(fù)雜的部分,但是作為一個真正的C++程序員,這部分很重要。尤其是對C++標(biāo)準(zhǔn)程序庫的掌握尤為重要。剛開始的時候千萬不要直撲VC中的各種向?qū)Ш驮O(shè)計器。
因為依賴開發(fā)環(huán)境生成的很多代碼會把我們搞糊涂,也不利于我們學(xué)習(xí)C++語言本身。我的建議就是生成一個空的控制臺工程,然后自己向里面添加文件。如下就是一個簡單的控制臺程序:
- //robindy/list.cpp
- #include <iostream>
- #include <list>
- using namespace std;
- int main()
- {
- list<char> coll;
- for(char c = \'a\'; c <= \'z\'; ++c)
- {
- coll.push_back(c);
- }
- list::const_iterator pos;
- for(pos = coll.begin(); pos != coll.end(); ++pos)
- {
- cout << *pos << \' \';
- }
- cout << endl;
- return 0;
- }
對using namespace std;的解釋:所謂namespace,是指標(biāo)識符的各種可見范圍。C++標(biāo)準(zhǔn)程序庫中的所有標(biāo)識符都被定義于一個名為std的namespace中。
由于namespace的概念,使用C++標(biāo)準(zhǔn)程序庫的任何標(biāo)識符時,可以有三種選擇:1、直接指定標(biāo)識符。例如std::ostream而不是ostream.完整語句如下:std::cout << std::hex << 3.4 << std::endl;2、使用using關(guān)鍵字。
using std::cout;using std::endl;以上程序可以寫成cout << std::hex << 3.4 << endl;3、最方便的就是使用using namespace std;這樣命名空間std內(nèi)定義的所有標(biāo)識符都有效(曝光)。就好像它們被聲明為全局變量一樣。那么以上語句可以如下寫:cout << hex << 3.4 << endl;
這段程序用到了標(biāo)準(zhǔn)模板庫,在屏幕上打印字符a~z,其中main函數(shù)的標(biāo)記式只有兩種是被C++標(biāo)準(zhǔn)委員會接受的,只有以下兩種寫法是符合C++標(biāo)準(zhǔn)的,是可移植的。即:
- int main()
- {
- }
- 和
- int main(int argc, char* argv[])
- {
- }
C++在main()的末尾定義了一個隱式的return 0; 但是在VC中必須顯式的寫出return語句。在BCB中可以不寫return而編譯通過。這段程序中用到了STL中的容器:鏈表。先是向鏈表中插入26個字母,然后從遍歷鏈表,輸出字符。我不建議初學(xué)者一開始就從模板庫入手。
但是我建議應(yīng)該逐漸地有意識地學(xué)習(xí)模板庫。如我們應(yīng)該熟悉cout和cin的用法(位于iostream),而減少使用老式的C函數(shù)庫中printf和sc anf等。從控制臺入手的好處就是避免我們理解VC中向?qū)У裙ぞ呱傻钠渌a。#t#
整個程序的流程很清楚。新手學(xué)習(xí)VC的一大難點就是搞不清楚整個程序的流程(從那條語句開始執(zhí)行,然后從那條語句退出。MFC做了太多封裝,掩蓋了事實的真相。。。。
通過控制臺我們可以很快地學(xué)習(xí)C++語言中的很多新特性。如類的封裝、繼承和多態(tài)等。通過這個時期的學(xué)習(xí),要能夠掌握三個東西: C++關(guān)鍵字、語法(重點是和面向?qū)ο笥嘘P(guān)的,以及模板)、C++標(biāo)準(zhǔn)程序庫(知道怎么使用即可,要徹底掌握需要很多時間和精力)。
至于與界面有關(guān)的東東(MFC中很大一部分是與界面相關(guān)的類,所以我認(rèn)為MFC很臃腫而無聊!回頭看過以前用MFC寫的程序,有一種“垃圾”的感覺。)自己做個測試:寫一個控制臺程序,在其中體現(xiàn)出類的繼承,函數(shù)重載,動態(tài)多態(tài)(通過虛函數(shù)實現(xiàn)),數(shù)據(jù)封裝,C++標(biāo)準(zhǔn)庫的運用。