程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 教C語言高手學C++(01)

教C語言高手學C++(01)

編輯:關於C語言

C語言高手學C++01

  人物介紹: C++大師:擁有十年的C++開發經驗,最近幾年轉入公司項目管理和員工培訓工作,以C++語言,系統設計和規劃,項目管理,員工培訓見長。在公司除了帶團隊之外,常常負責給員工培訓,偶爾上小課解答初級程序員的疑惑。 小蔡:現在時的嵌入式系統工程師,匯編語言/C語言的每天使用者。已經開發了3年程序,想提高一下自己的水平。   梆子: 小蔡是一個C語言高手,最近參與到其中一個項目,這個項目要求用C++語言。C++語言,對小蔡來說,既陌生又熟悉。熟悉的是基本語法,陌生的是,C++中的面向對象語法部分。這讓小蔡很痛苦,對他來說,C語言已經比匯編語言高級很多,一直認為C語言,就是非常完美的語言了。 這一天,小蔡聽說,公司有個項目經理,以前和他一樣,也是一個C語言高手,但是現在非常推崇C++。 於是,他決定去請教這位C++大師,看看自己該如何學習C++。 劇情拉開。   用C++,簡單得多的程序 進得門來,一陣客套之後,程序員本性露了出來,小蔡直接開始發問。 小蔡:你說,就我目前的情況,應該再學點啥呢? 大師:哎,嗯,呵呵……那就學 C++ 吧。 小蔡:你老勸我學C++,我們開發過程中真的用不到。畢竟,並不是所有的項目,都需要用到C++的啊。 大師:打人的時候,我們都看到招式,起作用的,其實是內功。 小蔡:C++不就是一種新的招式麼? 大師:非也,非也。就你目前情況,用得最熟練的武器,當然就是最好的武器。可是,一方面,我覺得嵌入式系統開發,還有很多領域將來會以C++為主,比如我們公司,目前很多項目,都開始采用C++實現。另外一方面,面向對象的開發思想,如果你具備,用C語言,一樣可以開發出好的程序來的。 小蔡:聽著累,你說實際點的。   大師放下自己手裡的書。眼睛裡露出得意的笑容。 大師:這還真找對人了。你的代碼中,至少有10項采用了C++才具備的特性。比如,新的for語句用法,const定義參數…… 小蔡:呵呵,上次入職培訓。你已經給我們詳細講過了,這些好用的特性,只要我的編譯器具備,我才不在乎是C,還是C++的特性呢。 大師:哦,看來,我不使出點殺手锏,你是不知道C++的厲害了。 小蔡:就是,光知道吹牛。 大師:去,拿紙來。   小蔡取來紙筆,大師開始講課。 大師:你知道的,我也是先玩了很多年C語言,才開始接觸面向對象和C++的。要說,C++比C語言優秀的地方,第一個,就是程序生長起來,成為大程序後,C++的開發效果更好。 這方面,我的體會很多的,因為我常常在用C++的時候思考,如果用C,咋辦? 所以,呵呵,我是最有資格來給你講為啥C程序員,必須學習 C++的。 小蔡笑:別吹了。快舉例子。 大師:嗯,我的經驗,都是大例子。1,想起來了。 大師:上次,你們的調試代碼中不是都要用到這個例子嗎?你們要輸出一些信息到屏幕上,以驗證你們的程序是否正確運行,用C++這樣做。 大師在紙上寫下這樣一個程序: class  Trace { public:        int deprint(char *s) } 大師:看,我們定義一個類,用來在你調試代碼的時候,輸出提示。你們用C語言如何做的? 小蔡:我們用宏。 大師:嗯,聰明的做法,這恐怕是C++時代,宏唯一的用處了。 但是,你看,當我們需要控制是否輸出的時候,C++這樣做: class  Trace { public:        Trace(){ noisy = FALSE; }        int deprint(char *s){  if(noisy) printf(……); }        int on();        int off();     private:        bool noisy; } 代碼是不是生長了。 對比一下,我們采用on和off來控制,比采用宏的,是不是邏輯上要直觀得多。 小蔡:我有些理解了。邏輯上,用宏也很直觀,但,如果這些代碼,用C語言來實現,有些混亂,沒有這樣清晰。小蔡在紙上寫下了,用C語言實現的辦法。 大師:對了,精彩的還在後面。假如,程序還生長,我們要讓這些信息,打印到其他地方,比如,說,輸出到一個文件中,你如何辦? 小蔡:……真的,很麻煩呢。 大師:嗬嗬,這就是C++精華所在。你看: class  Trace { public:        Trace(FILE *newf){ noisy = FALSE; f= newf }        int deprint(char *s){  if(noisy) printf(……); }        int on();        int off();     private:        bool noisy;        FILE *f;       //note here } 你看,用C語言,束手無策的時候,用C++,只用增加一個對象描述數據,改改輸出對象即可,非常簡單。 小蔡:這個案例,太精彩了。 大師狡猾的笑了:這樣精彩的案例,我們這裡的項目案例中,比比皆是,你是身在寶山阿。容我慢慢給你講來。      

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved