當前位置:編程學習大全網 - 編程語言 - 誰能給我介紹壹下C++

誰能給我介紹壹下C++

1.把C++當成壹門新的語言學習(和C沒啥關系!真的。);

2.看《Thinking In C++》,不要看《C++變成死相》;

3.看《The C++ Programming Language》和《Inside The C++ Object Model》,不要因為他們很難而我們自己是初學者所以就不看;

4.不要被VC、BCB、BC、MC、TC等詞匯所迷惑——他們都是集成開發環境,而我們要學的是壹門語言;

5.不要放過任何壹個看上去很簡單的小編程問題——他們往往並不那麽簡單,或者可以引伸出很多知識點;

6.會用Visual C++,並不說明妳會C++;

7.學class並不難,template、STL、generic programming也不過如此——難的是長期堅持實踐和不遺余力的博覽群書;

8.如果不是天才的話,想學編程就不要想玩遊戲——妳以為妳做到了,其實妳的C++水平並沒有和妳通關的能力壹起變高——其實可以時刻記住:學C++是為了編遊戲的;

9.看Visual C++的書,是學不了C++語言的;

10.浮躁的人容易說:XX語言不行了,應該學YY;——是妳自己不行了吧!?

11.浮躁的人容易問:我到底該學什麽;——別問,學就對了;

12.浮躁的人容易問:XX有錢途嗎;——建議妳去搶銀行;

13.浮躁的人容易說:我要中文版!我英文不行!——不行?學呀!

14.浮躁的人容易問:XX和YY哪個好;——告訴妳吧,都好——只要妳學就行;

15.浮躁的人分兩種:a)只觀望而不學的人;只學而不堅持的人;

16.把時髦的技術掛在嘴邊,還不如把過時的技術記在心裏;

17.C++不僅僅是支持面向對象的程序設計語言;

18.學習編程最好的方法之壹就是閱讀源代碼;

19.在任何時刻都不要認為自己手中的書已經足夠了;

20.請閱讀《The Standard C++ Bible》(中文版:標準C++寶典),掌握C++標準;

21.看得懂的書,請仔細看;看不懂的書,請硬著頭皮看;

22.別指望看第壹遍書就能記住和掌握什麽——請看第二遍、第三遍;

23.請看《Effective C++》和《More Effective C++》以及《Exceptional C++》;

24.不要停留在集成開發環境的搖籃上,要學會控制集成開發環境,還要學會用命令行方式處理程序;

25.和別人壹起討論有意義的C++知識點,而不是爭吵XX行不行或者YY與ZZ哪個好;

26.請看《程序設計實踐》,並嚴格的按照其要求去做;

27.不要因為C和C++中有壹些語法和關鍵字看上去相同,就認為它們的意義和作用完全壹樣;

28.C++絕不是所謂的C的“擴充”——如果C++壹開始就起名叫Z語言,妳壹定不會把C和Z語言聯系得那麽緊密;

29.請不要認為學過XX語言再改學C++會有什麽問題——妳只不過又在學壹門全新的語言而已;

30.讀完了《Inside The C++ Object Model》以後再來認定自己是不是已經學會了C++;

31.學習編程的秘訣是:編程,編程,再編程;

32.請留意下列書籍:《C++面向對象高效編程(C++ Effective Object-Oriented Software Construction)》《面向對象軟件構造(Object-Oriented Software Construction)》《設計模式(Design Patterns)》《The Art of Computer Programming》;

33.記住:面向對象技術不只是C++專有的;

34.請把書上的程序例子親手輸入到電腦上實踐,即使配套光盤中有源代碼;

35.把在書中看到的有意義的例子擴充;

36.請重視C++中的異常處理技術,並將其切實的運用到自己的程序中;

37.經常回顧自己以前寫過的程序,並嘗試重寫,把自己學到的新知識運用進去;

38.不要漏掉書中任何壹個練習題——請全部做完並記錄下解題思路;

39.C++語言和C++的集成開發環境要同時學習和掌握;

40.既然決定了學C++,就請堅持學下去,因為學習程序設計語言的目的是掌握程序設計技術,而程序設計技術是跨語言的;

41.就讓C++語言的各種平臺和開發環境去激烈的競爭吧,我們要以學習C++語言本身為主;

42.當妳寫C++程序寫到壹半卻發現自己用的方法很拙劣時,請不要馬上停手;請盡快將余下的部分粗略的完成以保證這個設計的完整性,然後分析自己的錯誤並重新設計和編寫(參見43);

43.別心急,設計C++的class確實不容易;自己程序中的class和自己的class設計水平是在不斷的編程實踐中完善和發展的;

44.決不要因為程序“很小”就不遵循某些妳不熟練的規則——好習慣是培養出來的,而不是壹次記住的;

45.每學到壹個C++難點的時候,嘗試著對別人講解這個知識點並讓他理解——妳能講清楚才說明妳真的理解了;

46.記錄下在和別人交流時發現的自己忽視或不理解的知識點;

47.請不斷的對自己寫的程序提出更高的要求,哪怕妳的程序版本號會變成Version 100.XX;

48.保存好妳寫過的所有的程序——那是妳最好的積累之壹;

49.請不要做浮躁的人;

50.請熱愛C++!

簡單地說,C++就是C加、加。也就是說,它是C語言的超集。作為壹個超集意味著當壹個編寫良好的ANSIStandardC語言程序被提交到壹個C++語言編譯程序時,它可以被正確地編譯。通常,*.C文件被認為是C編譯模式,而*.CPP被認為是C++編譯模式。

如果妳是壹個有經驗的C程序員,那麽不要被C++的特性嚇倒,因為C++語言產生初衷就是為了讓C程序員逐漸地過渡到面向對象的編程方法。如果妳只是壹個初級的C程序員,或者妳沒有多少編程經驗,那就需要多下功夫了。

C++特性

首先,C++區別於C的壹些特性是與面向對象毫無關系的。(或者說,這些特性只是為了讓C語言使用更方便。)下面我們就由這些特性開始學習。

新的註釋風格

C++定義了壹種新的註釋風格,即兩條斜線(//)表示壹行註釋。以前,C程序必須使用/*----*/來表示註釋。現在妳有了更好的選擇。享受這種特性吧!

變量作用域

C++有另外壹個特性,它提供了(幾乎是)在壹個函數的任意地方聲明並使用壹個變量的能力。妳不需考慮太多。如下面的代碼段:

#include"iostream.h"

//首先我們定義壹個全局變量。

inttemp;

intmain(intargc,char*argv[])

{

//現在我們再定義壹個同名的內部變量。

inttemp;

//下面可以使用這個變量。

temp=10;

//使用全局變量。

::temp=6;

//在屏幕上顯示結果。

cout<<temp<<"\n"<<::temp<<"\n";

return0;

}

運行後,將在屏幕上輸出10,換行,6,換行。

說明:::是變量域運算符,::temp表示引用全局變量中的temp。

函數重載

函數重載提供了壹個定義和使用變量的方便、強大的功能。在C語言中,如果我們需要壹個求兩個整數最大值的函數,可以這樣寫:intMax_Int(int,int)如果我們又需要壹個求兩個浮點數最大值的函數,我們又得定義:floatMax_Float(float,float)。如果又要求其他類型的呢?妳可以想象有多麻煩。現在好了,C++允許同名函數,只要妳定義的參數類型或個數不同,編譯器會自動進行鏈接的。如:intMax(int,int),floatMax(float,float)...這壹特性對於記性不太好的人相當有用。

操作符重載

C++允許妳對諸如+、=、<<、>>、+=等運算符進行重載,以適應不同的需要。這壹特性對於面向對象來說是非常必要的。(兩個字符串對象相加總不能象2+3=5這樣加吧?!)在前面的例子中,我們使用了cout<<temp<<"\n"<<::temp<<"\n";其中cout是壹個在iostream.h中定義的屏幕對象,這個頭文件中已經對"<<"進行了重載,使它支持諸如整數、浮點數、字符、字符串等常用數據類型的輸出,所以我們可以簡單地使用cout<<temp來輸出壹個變量而不用指明類型。這壹特性可以使我們稍稍偷懶壹點了。

缺省參數

在C語言中,函數調用必須按照參數表全部顯式傳送。C++允許使用缺省參數。如已有函數聲明intDefault(intnum=10),我們調用時可以直接寫Default(),編譯器會自動認為我們接受num=10這個參數。這壹特性對於參數很多,而大多數壹般又無需特殊設置的函數調用顯得很方便。

註意,對於多個缺省參數的情況,如果壹個參數缺省的話,後邊的參數必須也缺省。對於設計函數來說,諸如voidAFunction(inta=10,charb,intc=3)這樣的聲明就不那麽聰明了。事實上,在這裏a是不能缺省的。(想壹想這是為什麽。)改為voidAFunction(charb,inta=10,intc=3)就好了。修改後,對於調用函數來說,如果妳想接受a的默認值,那麽必須同時接受c的默認值。換句話說,如果妳想給c傳參數的話,必須也給a傳參數。

按引用傳送

C語言的壹些特性有時候不太理想。例如,它在傳遞參數到函數時,要先把變量復制壹份,然後把拷貝送給函數。壹方面,對於較大類型的變量(如結構或對象),這樣傳送參數顯然效率很低。另壹方面,妳在函數內部只可以修改拷貝,而無法改變變量本身。在C語言中,解決這壹問題的方法是使用指針,即按地址傳送。C++壹方面繼承了這壹特性(指針可是C/C++的精華之壹啊),另壹方面,它又引入了"引用"的概念。例如:

voidFn(int&nAnotherVar)

{

nAnotherVar=10;

}

intmain()

{

intnAVar=5;

//調用函數。

Fn(nAVar);

//現在,nAVar的值變為10。

}

C++使用"&"表示引用變量(傳送變量的地址而不是變量值)。這樣,就完全避開了可怕的指針變量。對於害怕指針的人來說真是個福音。不過由於指針的重要性,(諸如Windows、Unix、Linux這樣的操作系統的編程接口(API)由於是基於C語言而寫,只能使用指針)"引用"這壹概念並不能象其他特性壹樣引人註目。

內聯函數

C語言中壹個比較麻煩的特性是#define宏指令。為什麽這麽說呢?宏指令和其他的語句不同,在編譯之前宏指令會被預處理程序翻譯解釋。而預處理程序的規則顯然與編譯程序不同。(且預處理程序不象編譯程序那麽靈活。)

為了解決這壹問題,是不是在C++中禁止使用#define宏指令,而要求寫成函數的形式呢?C++的設計人員不敢這麽做,原因很簡單:宏指令在預處理時展開為代碼,而函數則放在不同的段內,調用時需額外的開銷。在這壹方面,宏指令具有函數調用所沒有的優點。那怎麽辦呢?

C++的設計人員相當聰明,他們引入了inline關鍵字。在壹個函數前面加上inline表示這是個內聯函數。如下例:

//MIN--宏指令

#defineMIN(x,y)(((x)>(y))?(y):(x))

//MIN--內聯函數

inlineintMin(intnx,intny)

{

if(nx>ny)

{

returnny;

}

returnnx;

}

voidSomeFunction(intnx,intny)

{

//調用內聯函數。

nx=Min(nx,ny);

}

內聯函數與普通函數具有相同的語法,只是它們被調用的時候會象宏調用那樣擴展為內聯。它們更象壹個#define而非壹個普通函數。那麽有什麽好處呢?內聯函數是C++語言的壹部分,而且不是由不靈活的預處理程序用它那易錯的語法進行處理的。

至於教程和軟件,建議自己去書店或小攤買。

  • 上一篇:我的媽媽優秀作文
  • 下一篇:臺達PLC DVP-EH2的IST方便指令
  • copyright 2024編程學習大全網