国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

C++語言簡介

2019-11-17 05:43:58
字體:
供稿:網(wǎng)友

    我們已看到用COM服務(wù)器組件對于建立一個基于網(wǎng)絡(luò)的應(yīng)用程序的重要性,但問題不在于是否建立它們,而在于用什么語言去創(chuàng)建。一種選擇是用C++。
    人們對C++有許多不同的看法,保守的C++程序員堅持用其他語言創(chuàng)建COM組件,他們認(rèn)為只有真正的程序員使用C++。另一方面,VB程序員認(rèn)為C++是一種很難把握和使用的語言,沒有必要增加編程時間和進行艱難的嘗試。java程序員認(rèn)為他們比C++程序員強,因為James Gosling(Java的發(fā)明者)吸收了許多語言(包括C++ )的優(yōu)點發(fā)明了Java,本章和下一章的目的就是消除對C++的偏見和錯誤概念。
    本章集中介紹用C++ 建立服務(wù)器組件,不講述C++語言,假如想學(xué)C++ ,請參閱Ivor.Horton著的《Beginning Visual C++6》,Wrox 出版,書號為ISBN 1-861000-88-X。
    本章的主要內(nèi)容有:
    ? C++簡史。
    ? 使用C++原因。
    ? 從VB移植到C++。
    ? ATL、STL和MFC介紹。
    ? 建立一個COM組件。
    ? 錯誤處理與調(diào)試。
    更重要的是應(yīng)該記住,現(xiàn)在,不只是在用C++建立組件,可以使用Visual C++中可用的任何工具,使得建立過程更加輕易。先從C++的起源談起。
17.1 C++語言
    在決定是否使用C++語言之前,最好是搞清楚這種語言的實質(zhì),讓我們看一下C++的歷史和現(xiàn)狀。
17.1.1 C++簡史
    剛開始形成的是C語言,那些想建立更快更有效的代碼的程序員非常欣賞C語言,有一位名叫Bjarne Stroustrup的人卻不滿足于僅僅是生產(chǎn)快速代碼,他想創(chuàng)建面向?qū)ο蟮腃語言編程。他開始對C語言的內(nèi)核進行必要的修改,使其能滿足面向?qū)ο竽P偷囊蟆++從此產(chǎn)生。
    Bjarne Stroustrup是C++的最初設(shè)計者和實現(xiàn)者。它自誕生以來,經(jīng)過開發(fā)和擴充已成一種完全成熟的編程語言。現(xiàn)在C++已由ANSI、BSI、DIN、其他幾個國家標(biāo)準(zhǔn)機構(gòu)和ISO定為標(biāo)準(zhǔn)。ISO標(biāo)準(zhǔn)于1997年11月4日經(jīng)投票正式通過。
    C++標(biāo)準(zhǔn)演變了許多年。C++模板是近幾年來對此語言的一種擴展,模板是根據(jù)類型參數(shù)來產(chǎn)生函數(shù)和類的機制,有時也稱模板為“參數(shù)化的類型”。使用模板,可以設(shè)計一個對許多類型的數(shù)據(jù)進行操作的類,而不需要為每個類型的數(shù)據(jù)建立一個單獨的類。標(biāo)準(zhǔn)模板庫(Standard Tempalte Library,STL )和微軟的活動模板庫(Active Tempalte Library,ATL )都基于這個C++語言擴展。
    C++標(biāo)準(zhǔn)可分為兩部分, C++語言本身和C++標(biāo)準(zhǔn)庫。C++標(biāo)準(zhǔn)庫對于Visual C++是相當(dāng)新的,實際上微軟只是在發(fā)布Visual C++ 5.0時去除了一些“bug”。標(biāo)準(zhǔn)庫提供了標(biāo)準(zhǔn)的輸入/輸出、字符串、容器(如矢量、列表和映射等)、非數(shù)值運算(如排序、搜索和合并等)和對數(shù)值計算的支持。應(yīng)該說, C/C++包含了相對少的要害字,而且很多最有用的函數(shù)都來源于庫,C++標(biāo)準(zhǔn)庫實現(xiàn)容器和算法的部分就是STL。
    STL是數(shù)據(jù)結(jié)構(gòu)和算法的一個框架,數(shù)據(jù)結(jié)構(gòu)包括矢量、列表和映射等,算法包括這些數(shù)據(jù)結(jié)構(gòu)的查找、拷貝和排序等。1994年7月,ANSI/ISO C++標(biāo)準(zhǔn)委員會投票決定接受STL為C++標(biāo)準(zhǔn)庫的一部分,這個建議是根據(jù)Alex Stepanov、Meng Lee和David Musser這三人的編程和軟件庫研究提出的。STL的產(chǎn)生是為了滿足通用性的設(shè)計目標(biāo),而不是為了提高性能。
    那么微軟對C++標(biāo)準(zhǔn)的態(tài)度怎什么樣?微軟運行VC++與Plum-Hall C++,想比較得到的分?jǐn)?shù)在92%和93%之間。為什么不是100%的一個原因是跟蹤這個標(biāo)準(zhǔn)并同時建立一個編譯器比較困難,微軟也考慮了對現(xiàn)有編碼兼容的重要性,有時他們不得不偏離標(biāo)準(zhǔn)以保持這個兼容性。
17.1.2 使用C++的原因
    應(yīng)該有充分的理由使用C++創(chuàng)建服務(wù)器組件,而不只是為了給上司一個好印象才使用C++。假如以前沒用過C++,你必須要盡力學(xué)習(xí)。

    1. 性能
    性能有個兩方面,算法速度和機器代碼效率。一個算法可以定義為數(shù)據(jù)通過系統(tǒng)的概念化的路徑,它描述一些點,在這些點上,數(shù)據(jù)能夠被操作并可轉(zhuǎn)換產(chǎn)生某個結(jié)果。例如,一個算法定義為獲取一個字符串,計算字符串中的字符個數(shù),并作為結(jié)果返回的過程。算法與
語言是獨立的,所以在編程之前必須設(shè)計算法,編寫一個快速程序的第一個步驟是設(shè)計良好的算法,能以最少的操作步驟得出問題的答案。第二個步是選擇語言,這也影響程序的速度。
    從性能的角度考慮,用匯編語言編寫程序是最佳的選擇,它是計算機能理解的自然語言。但是,幾乎沒有人用匯編語言編寫完整的程序,因為這樣做極其乏味。另一個最佳的選擇是C語言。然而,由VC++提供的所有工具都產(chǎn)生C++,而不是C。使用VC++的向?qū)Э梢陨纱罅康氖褂么a,而不必人工地編寫代碼。從編寫程序的難易程度和程序的性能綜合考慮, C++是最佳的選擇。
    C++性能良好,因為它被編譯為機器代碼。對于VBScript和Java等語言,代碼在運行時由程序解釋,而且每次運行程序時都要將代碼轉(zhuǎn)換為機器碼,這樣做效率比較低,不僅僅是已編譯過的C++程序運行得較快,而且微軟C++編譯器已存在多年。這意味著微軟的編譯器程序員已經(jīng)把許多優(yōu)點集中到編譯器上,以致于它能產(chǎn)生非常高效的機器碼。因為C++是編譯語言,而且非常自然,比VB更接近機器代碼,所以由C++編譯器產(chǎn)生的代碼一定比VB的編譯代碼效率更高。
    2. 錯誤處理
    一個好的程序與一個偉大的程序的區(qū)別就是其是否具有良好的錯誤處理支持。實際上,假如在實現(xiàn)中首先進行錯誤處理,而不是在最后才進行,那么整個程序的開發(fā)和測試過程會更加完美。但是,錯誤處理只能與語言所支持的內(nèi)容相一致。
    VBScript具有基本的錯誤處理支持功能。在默認(rèn)情況下,不能捕捉VBScript中的錯誤。每次懷疑產(chǎn)生錯誤時,要調(diào)用On Error Resume Next功能,并檢查Error對象。
    而C++中的錯誤處理比較好,這是因為有“異常處理”,本章的后面部分將具體介紹。
    3. 最小的依靠性
    正如上面所說,C++是一種編譯語言,即C++代碼在執(zhí)行之前已轉(zhuǎn)換為機器碼。只要此代碼不依靠于外部的動態(tài)鏈接庫(DLL),C++就可以在不需要安裝額外程序的情況下移動到運行同樣操作系統(tǒng)的其他機器和微處理器上,而移動Java程序時需要先安裝Java運行期庫。
    4. 利用現(xiàn)有的代碼
    由于C和C++已經(jīng)存在許多年了,現(xiàn)在有許多可利用的代碼,你的服務(wù)器組件可以使用現(xiàn)有的C/C++代碼或庫。例如統(tǒng)計庫和到老系統(tǒng)的C接口。
    5. 最大化COM特征
    COM與C++很接近,實際上, Don Box(COM的權(quán)威)在他的《Essential COM》一書的第一章寫道:“COM就是更好的C++”。他說明了COM規(guī)范是如何從C++語言規(guī)律中產(chǎn)生出來的。通過理解C++,會對COM有更深的理解。
    某些語言不能利用所有的COM特征,而在C++中,幾乎可以使用所有的COM特征。
17.1.3 不使用C++的原因
    知道什么時候使用C++是重要的,同樣,知道什么時候不使用C++也是重要的。想像一下那些長期維護代碼的人,假如他們中沒有一些C++程序員支持C++,那么開發(fā)者們不得不把眼光轉(zhuǎn)向另外一些他們熟悉的語言。
    改變C++組件時,為了看到這些改變的結(jié)果,必須重新編譯該組件代碼,這會花費很長的開發(fā)時間。C++不能像asp頁面代碼那樣,只使用記事本,改變代碼的一行,重新裝載而得到結(jié)果。因此,假如某些工作需要經(jīng)常變化(如原型),不要用C++。
    在C++中,對一些致命的錯誤不能獲得更多的保護,寫一個使組件崩潰的代碼是很輕易的。這是為了提供快速代碼而付出的代價, C++不會停下來去檢查代碼是否按設(shè)計運行能否使程序不崩潰依靠于開發(fā)者的技巧。假如在這方面花的時間較少或剛剛學(xué)習(xí)C++,最好不要使用C++。等到已經(jīng)意識到C++中所有輕易犯的錯誤,而且在檢測組件之前花了許多時間,才可以使用C++,假如想很快、很輕易地建立一個組件,而且也不考慮該組件的執(zhí)行速度,那么使用VB吧!
17.1.4 把ASP技巧轉(zhuǎn)到C++上
    學(xué)習(xí)新東西的最好方法就是利用現(xiàn)有的技巧。對于ASP開發(fā)者來說,已經(jīng)學(xué)習(xí)了C++所要求的許多技巧,非凡是,JScript語法和ActiveX或COM的面向?qū)ο缶幊痰母拍睢?br />    1. JScript
    大部分ASP開發(fā)者都用JScript在瀏覽器上使用DHTML。JScript的語法與C非常相似,所以,假如懂得JScript,那么就懂得基本的C語法。當(dāng)然,只是C++語法的子集。C++有許多額外的語法來支持面向?qū)ο缶幊蹋@就是我們下一步要做的。

    2. 面向?qū)ο缶幊?br />    假如你在VB中使用過類(class),則對任何COM對象和文檔對象模型(Document ObjectModel,DOM )都應(yīng)熟悉,因為已經(jīng)有了面向?qū)ο缶幊?OOP)的概念。在前面已經(jīng)說過, C和C++的區(qū)別是C++支持面向?qū)ο缶幊獭?br />

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 合山市| 威远县| 乌海市| 托克托县| 遂宁市| 江门市| 清徐县| 石台县| 英超| 麦盖提县| 竹北市| 伊通| 绥宁县| 太白县| 略阳县| 深圳市| 宝坻区| 阿拉尔市| 自治县| 修文县| 滕州市| 海伦市| 兰州市| 中西区| 三河市| 花垣县| 绍兴县| 民乐县| 奉化市| 舒城县| 广安市| 同仁县| 时尚| 札达县| 白河县| 洪泽县| 多伦县| 杭锦后旗| 色达县| 轮台县| 枣强县|