亚洲欧洲国产欧美一区精品,激情五月亚洲色五月,最新精品国偷自产在线婷婷,欧美婷婷丁香五月天社区

      考試首頁 | 考試用書 | 培訓課程 | 模擬考場 | 考試論壇  
      全國  |             |          |          |          |          |         
        當前位置:計算機等級 > 二級考試 > C++語言程序設計 > C++輔導 > 文章內容
        

      計算機等級考試二級C++語言程序設計輔導筆記:C++與C語言的區(qū)別

      中華IT學院   【 】  [ 2017年5月27日 ]

        注明:以下及其后續(xù)內容部分摘自《Standard C++ Bible》,所有程序代碼都在Visual Stdio 6.0中編譯運行,操作系統(tǒng)為WinXP。本文不涉及VC6.0開發(fā)工具的使用,只講解C++語法知識。

        C++和C的共同部分就不講解了(如 常量和變量,循環(huán)語句和循環(huán)控制,數(shù)組和指針等,這里面的一些區(qū)別會在本節(jié)和下節(jié)介紹一下),本文著重介紹C++的特點,如類、繼承和多重繼承、運算符重載、類模板、C++標準庫、模板庫、等等。

        一、C++概述

        (一) 發(fā)展歷史

        1980年,Bjarne Stroustrup博士開始著手創(chuàng)建一種模擬語言,能夠具有面向對象的程序設計特色。在當時,面向對象編程還是一個比較新的理念,Stroustrup博士并不是從頭開始設計新語言,而是在C語言的基礎上進行創(chuàng)建。這就是C++語言。

        1985年,C++開始在外面慢慢流行。經(jīng)過多年的發(fā)展,C++已經(jīng)有了多個版本。為次,ANSI和ISO的聯(lián)合委員會于1989年著手為C++制定標準。1994年2月,該委員會出版了第一份非正式草案,1998年正式推出了C++的國際標準。

        (二) C和C++

        C++是C的超集,也可以說C是C++的子集,因為C先出現(xiàn)。按常理說,C++編譯器能夠編譯任何C程序,但是C和C++還是有一些小差別。

        例如C++增加了C不具有的關鍵字。這些關鍵字能作為函數(shù)和變量的標識符在C程序中使用,盡管C++包含了所有的C,但顯然沒有任何C++編譯器能編譯這樣的C程序。

        C程序員可以省略函數(shù)原型,而C++不可以,一個不帶參數(shù)的C函數(shù)原型必須把void寫出來。而C++可以使用空參數(shù)列表。

        C++中new和delete是對內存分配的運算符,取代了C中的malloc和free。

        標準C++中的字符串類取代了C標準C函數(shù)庫頭文件中的字符數(shù)組處理函數(shù)。

        C++中用來做控制態(tài)輸入輸出的iostream類庫替代了標準C中的stdio函數(shù)庫。

        C++中的try/catch/throw異常處理機制取代了標準C中的setjmp()和longjmp()函數(shù)。

        二、關鍵字和變量

        C++相對與C增加了一些關鍵字,如下:

        typename bool dynamic_cast mutable namespace

        static_cast using catch explicit new

        virtual operator false private template

        volatile const protected this wchar_t

        const_cast public throw friend true

        reinterpret_cast try

        bitor xor_e and_eq compl or_eq

        not_eq bitand

        在C++中還增加了bool型變量和wchar_t型變量:

        布爾型變量是有兩種邏輯狀態(tài)的變量,它包含兩個值:真和假。如果在表達式中使用了布爾型變量,那么將根據(jù)變量值的真假而賦予整型值1或0。要把一個整型變量轉換成布爾型變量,如果整型值為0,則其布爾型值為假;反之如果整型值為非0,則其布爾型值為真。布兒型變量在運行時通常用做標志,比如進行邏輯測試以改變程序流程。

        #include iostream.h

        int main()

        {

        bool flag;

        flag=true;

        if(flag) cout< return 0;

        }

        C++中還包括wchar_t數(shù)據(jù)類型,wchar_t也是字符類型,但是是那些寬度超過8位的數(shù)據(jù)類型。許多外文字符集所含的數(shù)目超過256個,char字符類型無法完全囊括。wchar_t數(shù)據(jù)類型一般為16位。

        標準C++的iostream類庫中包括了可以支持寬字符的類和對象。用wout替代cout即可。

        #include iostream.h

        int main()

        {

        wchar_t wc;

        wc='b';

        wout< wc='y';

        wout< wc='e';

        wout< return 0;

        }

        說明一下:某些編譯器無法編譯該程序(不支持該數(shù)據(jù)類型)。

        三、強制類型轉換

        有時候,根據(jù)表達式的需要,某個數(shù)據(jù)需要被當成另外的數(shù)據(jù)類型來處理,這時,就需要強制編譯器把變量或常數(shù)由聲明時的類型轉換成需要的類型。為此,就要使用強制類型轉換說明,格式如下:

        int* iptr=(int*) &table;

        表達式的前綴(int*)就是傳統(tǒng)C風格的強制類型轉換說明(typecast),又可稱為強制轉換說明(cast)。強制轉換說明告訴編譯器把表達式轉換成指定的類型。有些情況下強制轉換是禁用的,例如不能把一個結構類型轉換成其他任何類型。數(shù)字類型和數(shù)字類型、指針和指針之間可以相互轉換。當然,數(shù)字類型和指針類型也可以相互轉換,但通常認為這樣做是不安全而且也是沒必要的。強制類型轉換可以避免編譯器的警告。

        long int el=123;

        short i=(int) el;

        float m=34.56;

        int i=(int) m;

        上面兩個都是C風格的強制類型轉換,C++還增加了一種轉換方式,比較一下上面和下面這個書寫方式的不同:

        long int el=123;

        short i=int (el);

        float m=34.56;

        int i=int (m);

        使用強制類型轉換的最大好處就是:禁止編譯器對你故意去做的事發(fā)出警告。但是,利用強制類型轉換說明使得編譯器的類型檢查機制失效,這不是明智的選擇。通常,是不提倡進行強制類型轉換的。除非不可避免,如要調用malloc()函數(shù)時要用的void型指針轉換成指定類型指針。

        四、標準輸入輸出流

        在C語言中,輸入輸出是使用語句scanf()和printf()來實現(xiàn)的,而C++中是使用類來實現(xiàn)的。

        #include iostream.h

        main() //C++中main()函數(shù)默認為int型,而C語言中默認為void型。

        {

        int a;

        cout< cin>>a; /*輸入一個數(shù)值*/

        cout< return 0;

        }

        cin,cout,endl對象,他們本身并不是C++語言的組成部分。雖然他們已經(jīng)是ANSI標準C++中被定義,但是他們不是語言的內在組成部分。在C++中不提供內在的輸入輸出運算符,這與其他語言是不同的。輸入和輸出是通過C++類來實現(xiàn)的,cin和cout是這些類的實例,他們是在C++語言的外部實現(xiàn)。

        在C++語言中,有了一種新的注釋方法,就是‘//’,在該行//后的所有說明都被編譯器認為是注釋,這種注釋不能換行。C++中仍然保留了傳統(tǒng)C語言的注釋風格/*……*/。

        C++也可采用格式化輸出的方法:

        #include iostream.h

        int main()

        {

        int a;

        cout< cin>>a;

        cout<

        五、函數(shù)重載

        在C++中,允許有相同的函數(shù)名,不過它們的參數(shù)類型不能完全相同,這樣這些函數(shù)就可以相互區(qū)別開來。而這在C語言中是不允許的。

        1.參數(shù)個數(shù)不同

        #include iostream.h

        void a(int,int);

        void a(int);

        int main()

        {

        a(5);

        a(6,7);

        return 0;

        }

        void a(int i)

        {

        cout< }

        void a(int i,int j)

        {

        cout< }

        2.參數(shù)格式不同

        #include iostream.h

        void a(int,int);

        void a(int,float);

        int main()

        {

        a(5,6);

        a(6,7.0);

        return 0;

        }

        void a(int i,int j)

        {

        cout< }

        void a(int i,float j)

        {

        cout< }

        六、變量作用域

        C++語言中,允許變量定義語句在程序中的任何地方,只要在是使用它之前就可以;而C語言中,必須要在函數(shù)開頭部分。而且C++允許重復定義變量,C語言也是做不到這一點的。看下面的程序:

        #include iostream.h

        int a;

        int main()

        {

        cin>>a;

        for(int i=1;i<=10;i++) //C語言中,不允許在這里定義變量

        {

        static int a=0; //C語言中,同一函數(shù)塊,不允許有同名變量

        a+=i;

        cout<<::a<< < }

        return 0;

        }

      首頁 1 2 尾頁
      分享到:
      本文糾錯】【告訴好友】【打印此文】【返回頂部
      將考試網(wǎng)添加到收藏夾 | 每次上網(wǎng)自動訪問考試網(wǎng) | 復制本頁地址,傳給QQ/MSN上的好友 | 申請鏈接 | 意見留言 TOP
      關于本站  網(wǎng)站聲明  廣告服務  聯(lián)系方式  站內導航  考試論壇
      Copyright © 2007-2013 中華考試網(wǎng)(Examw.com) All Rights Reserved