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

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;
}
代碼是否是生長了。
對比一下,咱們採用onoff來控制,比採用宏的,是否是邏輯上要直觀得多。
小蔡:我有些理解了。邏輯上,用宏也很直觀,但,若是這些代碼,用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++,只用增長一個對象描述數據,改改輸出對象便可,很是簡單。
小蔡:這個案例,太精彩了。
大師狡猾的笑了:這樣精彩的案例,咱們這裏的項目案例中,比比皆是,你是身在寶山阿。容我慢慢給你講來。
相關文章
相關標籤/搜索