當前位置:編程學習大全網 - 編程語言 - 什麽叫編程函數?他有什麽作用?c++的結構是怎樣的?

什麽叫編程函數?他有什麽作用?c++的結構是怎樣的?

我下面說的就是函數的定義,如果妳不能完全理解的話我建議妳先看看下面的C語言結構,不然別人再怎麽給妳解釋妳也聽不明白:(

在某個變化過程中,有兩個變量x、y,如果給定自變量x壹個值,那麽應變量有且只有壹個變量與之對應,那麽我們稱y是x的函數。

人們對C++有許多不同的看法,保守的C++程序員堅持用其他語言創建COM組件,他們認為只有真正的程序員使用C++。另壹方面,VB程序員認為C++是壹種很難掌握和使用的語言,沒有必要增加編程時間和進行艱難的嘗試。Java程序員認為他們比C++程序員強,因為James Gosling(Java的發明者)吸收了許多語言(包括C++ )的優點發明了Java,本章和下壹章的目的就是消除對C++的偏見和錯誤概念。

本章集中介紹用C++ 建立服務器組件,不講述C++語言,如果想學C++ ,請參閱Ivor.Horton著的《Beginning Visual C++6》,Wrox 出版,書號為ISBN 1-861000-88-X。

本章的主要內容有:

? C++簡史。

? 使用C++原因。

? 從VB移植到C++。

? ATL、STL和MFC介紹。

? 建立壹個COM組件。

? 錯誤處理與調試。

更重要的是應該記住,現在,不只是在用C++建立組件,可以使用Visual C++中可用的任何工具,使得建立過程更加容易。先從C++的起源談起。

17.1 C++語言

在決定是否使用C++語言之前,最好是搞清楚這種語言的實質,讓我們看壹下C++的歷史和現狀。

17.1.1 C++簡史

剛開始形成的是C語言,那些想建立更快更有效的代碼的程序員非常欣賞C語言,有壹位名叫Bjarne Stroustrup的人卻不滿足於僅僅是生產快速代碼,他想創建面向對象的C語言編程。他開始對C語言的內核進行必要的修改,使其能滿足面向對象模型的要求。C++從此產生。

Bjarne Stroustrup是C++的最初設計者和實現者。它自誕生以來,經過開發和擴充已成壹種完全成熟的編程語言。現在C++已由ANSI、BSI、DIN、其他幾個國家標準機構和ISO定為標準。ISO標準於1997年11月4日經投票正式通過。

C++標準演變了許多年。C++模板是近幾年來對此語言的壹種擴展,模板是根據類型參數來產生函數和類的機制,有時也稱模板為“參數化的類型”。使用模板,可以設計壹個對許多類型的數據進行操作的類,而不需要為每個類型的數據建立壹個單獨的類。標準模板庫(Standard Tempalte Library,STL )和微軟的活動模板庫(Active Tempalte Library,ATL )都基於這個C++語言擴展。

C++標準可分為兩部分, C++語言本身和C++標準庫。C++標準庫對於Visual C++是相當新的,實際上微軟只是在發布Visual C++ 5.0時去除了壹些“bug”。標準庫提供了標準的輸入/輸出、字符串、容器(如矢量、列表和映射等)、非數值運算(如排序、搜索和合並等)和對數值計算的支持。應該說, C/C++包含了相對少的關鍵字,而且很多最有用的函數都來源於庫,C++標準庫實現容器和算法的部分就是STL。

STL是數據結構和算法的壹個框架,數據結構包括矢量、列表和映射等,算法包括這些數據結構的查找、拷貝和排序等。1994年7月,ANSI/ISO C++標準委員會投票決定接受STL為C++標準庫的壹部分,這個建議是根據Alex Stepanov、Meng Lee和David Musser這三人的編程和軟件庫研究提出的。STL的產生是為了滿足通用性的設計目標,而不是為了提高性能。

那麽微軟對C++標準的態度怎什麽樣?微軟運行VC++與Plum-Hall C++,想比較得到的分數在92%和93%之間。為什麽不是100%的壹個原因是跟蹤這個標準並同時建立壹個編譯器比較困難,微軟也考慮了對現有編碼兼容的重要性,有時他們不得不偏離標準以保持這個兼容性。

17.1.2 使用C++的原因

應該有充分的理由使用C++創建服務器組件,而不只是為了給上司壹個好印象才使用C++。如果以前沒用過C++,妳必須要盡力學習。

1. 性能

性能有個兩方面,算法速度和機器代碼效率。壹個算法可以定義為數據通過系統的概念化的路徑,它描述壹些點,在這些點上,數據能夠被操作並可轉換產生某個結果。例如,壹個算法定義為獲取壹個字符串,計算字符串中的字符個數,並作為結果返回的過程。算法與

語言是獨立的,所以在編程之前必須設計算法,編寫壹個快速程序的第壹個步驟是設計良好的算法,能以最少的操作步驟得出問題的答案。第二個步是選擇語言,這也影響程序的速度。

從性能的角度考慮,用匯編語言編寫程序是最佳的選擇,它是計算機能理解的自然語言。但是,幾乎沒有人用匯編語言編寫完整的程序,因為這樣做極其乏味。另壹個最佳的選擇是C語言。然而,由VC++提供的所有工具都產生C++,而不是C。使用VC++的向導可以生成大量的使用代碼,而不必人工地編寫代碼。從編寫程序的難易程度和程序的性能綜合考慮, C++是最佳的選擇。

C++性能良好,因為它被編譯為機器代碼。對於VBScript和Java等語言,代碼在運行時由程序解釋,而且每次運行程序時都要將代碼轉換為機器碼,這樣做效率比較低,不僅僅是已編譯過的C++程序運行得較快,而且微軟C++編譯器已存在多年。這意味著微軟的編譯器程序員已經把許多優點集中到編譯器上,以致於它能產生非常高效的機器碼。因為C++是編譯語言,而且非常自然,比VB更接近機器代碼,所以由C++編譯器產生的代碼壹定比VB的編譯代碼效率更高。

2. 錯誤處理

壹個好的程序與壹個偉大的程序的區別就是其是否具有良好的錯誤處理支持。實際上,如果在實現中首先進行錯誤處理,而不是在最後才進行,那麽整個程序的開發和測試過程會更加完美。但是,錯誤處理只能與語言所支持的內容相壹致。

VBScript具有基本的錯誤處理支持功能。在默認情況下,不能捕獲VBScript中的錯誤。每次懷疑產生錯誤時,要調用On Error Resume Next功能,並檢查Error對象。

而C++中的錯誤處理比較好,這是因為有“異常處理”,本章的後面部分將詳細介紹。

3. 最小的依賴性

正如上面所說,C++是壹種編譯語言,即C++代碼在執行之前已轉換為機器碼。只要此代碼不依賴於外部的動態鏈接庫(DLL),C++就可以在不需要安裝額外程序的情況下移動到運行同樣操作系統的其他機器和微處理器上,而移動Java程序時需要先安裝Java運行期庫。

4. 利用現有的代碼

由於C和C++已經存在許多年了,現在有許多可利用的代碼,妳的服務器組件可以使用現有的C/C++代碼或庫。例如統計庫和到老系統的C接口。

5. 最大化COM特征

COM與C++很接近,實際上, Don Box(COM的權威)在他的《Essential COM》壹書的第壹章寫道:“COM就是更好的C++”。他說明了COM規範是如何從C++語言規律中產生出來的。通過理解C++,會對COM有更深的理解。

某些語言不能利用所有的COM特征,而在C++中,幾乎可以使用所有的COM特征。

17.1.3 不使用C++的原因

知道什麽時候使用C++是重要的,同樣,知道什麽時候不使用C++也是重要的。想像壹下那些長期維護代碼的人,如果他們中沒有壹些C++程序員支持C++,那麽開發者們不得不把眼光轉向另外壹些他們熟悉的語言。

改變C++組件時,為了看到這些改變的結果,必須重新編譯該組件代碼,這會花費很長的開發時間。C++不能像ASP頁面代碼那樣,只使用記事本,改變代碼的壹行,重新裝載而得到結果。因此,如果某些工作需要經常變化(如原型),不要用C++。

在C++中,對壹些致命的錯誤不能獲得更多的保護,寫壹個使組件崩潰的代碼是很容易的。這是為了提供快速代碼而付出的代價, C++不會停下來去檢查代碼是否按設計運行能否使程序不崩潰依賴於開發者的技巧。如果在這方面花的時間較少或剛剛學習C++,最好不要使用C++。等到已經意識到C++中所有容易犯的錯誤,而且在檢測組件之前花了許多時間,才可以使用C++,如果想很快、很容易地建立壹個組件,而且也不考慮該組件的執行速度,那麽使用VB吧!

17.1.4 把ASP技巧轉到C++上

學習新東西的最好方法就是利用現有的技巧。對於ASP開發者來說,已經學習了C++所要求的許多技巧,特別是,JScript語法和ActiveX或COM的面向對象編程的概念。

1. JScript

大部分ASP開發者都用JScript在瀏覽器上使用DHTML。JScript的語法與C非常相似,所以,如果懂得JScript,那麽就懂得基本的C語法。當然,只是C++語法的子集。C++有許多額外的語法來支持面向對象編程,這就是我們下壹步要做的。

2. 面向對象編程

如果妳在VB中使用過類(class),則對任何COM對象和文檔對象模型(Document ObjectModel,DOM )都應熟悉,因為已經有了面向對象編程(OOP)的概念。在前面已經說過, C和C++的區別是C++支持面向對象編程。

  • 上一篇:有沒有什麽軟件翻譯英文版的軟件比較精確地~?
  • 下一篇:C++實現UDP協議通信,親測有效
  • copyright 2024編程學習大全網