• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 12,  comments - 21,  trackbacks - 0

            C/C++測(cè)試題

            面向?qū)ο?/span>

            選擇題:

            C++概述

            1、以下C++新增的關(guān)鍵字為  D 

            A break

            B continue

            C stuct

            D inline

            2、面向?qū)ο蟪绦蛟O(shè)計(jì)將數(shù)據(jù)與__A___放在一起,作為相互依存、不可分割的整體來(lái)處理。

            A對(duì)數(shù)據(jù)的操作           B信息       C數(shù)據(jù)隱藏                 D數(shù)據(jù)抽象

             

            3、面向?qū)ο蟪绦蛟O(shè)計(jì)優(yōu)于傳統(tǒng)的結(jié)構(gòu)化程序設(shè)計(jì),其優(yōu)越性主要表現(xiàn)在,它有希望解決軟件工程的兩個(gè)主要問(wèn)題:軟件復(fù)雜性和__A____

            A 軟件生產(chǎn)率的提高  B 精化已有的代碼   C 共享代碼         D 編寫(xiě)可重用代碼

             

            4、面向?qū)ο笙到y(tǒng)的____B__是一種信息隱藏技術(shù),目的在于將對(duì)象的使用者與設(shè)計(jì)者分開(kāi),使用者不必知道對(duì)象行為實(shí)現(xiàn)的細(xì)節(jié),只需用設(shè)計(jì)者提供的協(xié)議命令對(duì)象去做即可。

            A多態(tài)性                            B封裝性       C繼承性                        D復(fù)用性

             

            5___A___不是面向?qū)ο笙到y(tǒng)所包含的要素

            A重載                         B對(duì)象        C                          D繼承

             

            6、關(guān)于C++C語(yǔ)言的關(guān)系的描述中,____D__是錯(cuò)誤的。

            A  C語(yǔ)言是C++的一個(gè)子集          B  C++C語(yǔ)言是兼容的

            C  C++對(duì)C語(yǔ)言進(jìn)行了一些改進(jìn)      D  C++C語(yǔ)言都是面向?qū)ο蟮?/span>

             

            7、下面關(guān)于對(duì)象概念的表述中,___A___是錯(cuò)誤的。

            A 對(duì)象就是C語(yǔ)言中的結(jié)構(gòu)變量

            B 對(duì)象代表著正在創(chuàng)建的系統(tǒng)中的一個(gè)實(shí)體

            C 對(duì)象是一個(gè)狀態(tài)和操作(或方法)的封裝體

            D 對(duì)象之間的信息傳遞是通過(guò)信息進(jìn)行的

             

            8、下面關(guān)于類概念的表述中,_____D_是錯(cuò)誤的。

            類是抽象數(shù)據(jù)類型的實(shí)現(xiàn)        B 類是具有共同行為的若干對(duì)象的統(tǒng)一描述體

            類是創(chuàng)建對(duì)象的樣板            D 類就是C語(yǔ)言中的結(jié)構(gòu)類型

             

            9、下列關(guān)于C++類的描述中錯(cuò)誤的是___C___

            類與類之間可以通過(guò)一些手段進(jìn)行通信和聯(lián)絡(luò)

            類用于描述事物的屬性和對(duì)事物的操作

            類與類之間必須是平等關(guān)系,而不能組成層次關(guān)系

            類與類之間可以通過(guò)封裝而具有明確的獨(dú)立性

             

            10、下列關(guān)鍵字中,____B__既在C語(yǔ)言中使用,又在C++語(yǔ)言中使用

            A  inline   B  break   C  private D public

             

            11C++對(duì)C語(yǔ)言做了很多改進(jìn)。下列描述中___D___使得C語(yǔ)言發(fā)生了質(zhì)變,即從面向過(guò)程變成了面向?qū)ο?/span>

            A增加了一些新的運(yùn)算符      B允許函數(shù)重載,并允許設(shè)置默認(rèn)參數(shù)

            C規(guī)定函數(shù)說(shuō)明必須用原型    D引進(jìn)了類和對(duì)象的概念

             

            12、下列C++標(biāo)點(diǎn)符號(hào)中表示行注釋開(kāi)始的是___C___

            A   #   B     C   //    D  }

             

            13、下列關(guān)于C++C語(yǔ)言關(guān)系的描述中錯(cuò)誤的是__C____

            A   C++C語(yǔ)言的超集                        B   C++對(duì)C語(yǔ)言進(jìn)行了擴(kuò)充

            C   C++|C語(yǔ)言都是面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言    D   C++包含C語(yǔ)言的全部語(yǔ)法

             

            14、下列正確的選項(xiàng)是________A______

            繼承是創(chuàng)建一個(gè)具有另一個(gè)類的屬性和行為的新類的能力

            B  C語(yǔ)言支持面向?qū)ο蟮某绦蛟O(shè)計(jì)

            空白符是一種可以被編譯的符號(hào)

            標(biāo)識(shí)符不宜太長(zhǎng),一般設(shè)定為16個(gè)字符

             

            15、下列關(guān)于多態(tài)說(shuō)法錯(cuò)誤的是__B_______

            不同的對(duì)象調(diào)用相同名稱的函數(shù),并可導(dǎo)致完全不同的行為的現(xiàn)象稱為多態(tài)性

            B C++語(yǔ)言中多態(tài)性通過(guò)使用封裝技術(shù)來(lái)支持

            多態(tài)是面向?qū)ο蟪绦蛟O(shè)計(jì)的一個(gè)重要機(jī)制

            多態(tài)是人類思維方式的一種模擬

             

             

            類和對(duì)象

            16、以下類的說(shuō)明,請(qǐng)指出錯(cuò)誤的地方_____A___

            Class CSample

            {

                   int a = 2;               (A)

                   CSample();       (B)

                   Public:

                   CSample(int val); (C)

                   ~CSample();          (D)

            }

             

            17、有關(guān)類的說(shuō)法不正確的是____D____

            類是一種用戶自定義的數(shù)據(jù)類型

            只有類中的成員函數(shù)才能存取類中的私有數(shù)據(jù)

            在類中,如果不做特別說(shuō)明,所有的數(shù)據(jù)類型均為私有類型

            在類中,如果不做特別說(shuō)明,所有的成員函數(shù)均為公有類型

             

            18、有關(guān)類和對(duì)象的說(shuō)法下列不正確的有____C____

            A 對(duì)象是類的一個(gè)實(shí)例           B 任何一個(gè)對(duì)象只能屬于一個(gè)具體的類

            C 一個(gè)類只能有一個(gè)對(duì)象         D 類與對(duì)象的關(guān)系和數(shù)據(jù)類型和變量的關(guān)系

             

            19、關(guān)于類和對(duì)象,以下敘述正確的是__B____  

            一個(gè)類的成員函數(shù)可以任意調(diào)用

            通常,只有通過(guò)具體的對(duì)象,才能訪問(wèn)類的成員函數(shù)

            對(duì)象是模板,類是實(shí)例

            類和對(duì)象間沒(méi)有任何關(guān)系

             

            20、有關(guān)構(gòu)造函數(shù)的說(shuō)法不正確的是____D____

            A 構(gòu)造函數(shù)名字和類的名字一樣          B 構(gòu)造函數(shù)在說(shuō)明類變量時(shí)自動(dòng)執(zhí)行

            C 構(gòu)造函數(shù)無(wú)任何函數(shù)類型              D 構(gòu)造函數(shù)有且只有一個(gè)

             

            21、有關(guān)析構(gòu)函數(shù)的說(shuō)法不正確的是___C_____

            A 析構(gòu)函數(shù)有且只有一個(gè)

            B 析構(gòu)函數(shù)無(wú)任何函數(shù)類型

            C 析構(gòu)函數(shù)和構(gòu)造函數(shù)一樣可以有形參

            D 析構(gòu)函數(shù)的作用是在對(duì)象被撤銷時(shí)收回先前分配的內(nèi)存空間

             

            22、在類的定義體外定義成員函數(shù)時(shí),需要在函數(shù)名前加上__B______

            A 類標(biāo)記      B 類域標(biāo)記     C 類對(duì)象      D 域運(yùn)算符

             

            23、在類的定義形式中,數(shù)據(jù)成員、成員函數(shù)和___A____組成了類定義體。

            A 成員的訪問(wèn)控制消息   B 公有消息    C 私有消息    D 保護(hù)消息

             

            24____C____的功能使對(duì)對(duì)象進(jìn)行初始化。

            A 析構(gòu)函數(shù)    B 數(shù)據(jù)成員    C 構(gòu)造函數(shù)    D 靜態(tài)成員函數(shù)

             

            25、若Q是類,a是它的一個(gè)對(duì)象,p1是類對(duì)象a的一個(gè)指針,那么類對(duì)象a可以通過(guò)①___B____來(lái)訪問(wèn)類的成員,類對(duì)象a的指針p1可以通過(guò)②_____D__來(lái)訪問(wèn)類的成員。

            A   ::        B     .      C         D ->

             

            26、下列的各類函數(shù)中,___C______不是類的成員函數(shù)

            構(gòu)造函數(shù)B 析構(gòu)函數(shù) C 友元函數(shù) D 拷貝初始化構(gòu)造函數(shù)

             

            27、通常拷貝初始化構(gòu)造函數(shù)的參數(shù)是______C____

            A 某個(gè)對(duì)象名    B 某個(gè)對(duì)象的成員名   C 某個(gè)對(duì)象的引用名    D 某個(gè)對(duì)象的指針名

             

            28、類模板的使用實(shí)際上是將類模板實(shí)例化成一個(gè)具體的____A___

            A      B 對(duì)象    C   函數(shù)    D 模板類

             

            29、模板是實(shí)現(xiàn)類屬機(jī)制的一種工具,其功能非常強(qiáng)大,它既允許用戶構(gòu)造類屬函數(shù),既① ____B___;也允許用戶構(gòu)造類屬類,即② ______D__

            A 函數(shù)模板 B模板函數(shù) C 類模板   D 模板類

             

            30、關(guān)于對(duì)象的this指針,以下敘述正確的是__B____

            A 必須顯式地在類定義中聲明this數(shù)據(jù)成員,才能使用this指針

            B 一旦生成一個(gè)對(duì)象,該對(duì)象的this指針就指向該對(duì)象本身

            C 一個(gè)類的所有對(duì)象的this指針的值都是相同的

            D 不能通過(guò)對(duì)象的this指針訪問(wèn)對(duì)象的數(shù)據(jù)成員和成員函數(shù)

             

            31、關(guān)于new運(yùn)算符的下列描述中,   D       是錯(cuò)誤的。

            A 它可以用來(lái)動(dòng)態(tài)創(chuàng)建對(duì)象和對(duì)象數(shù)組

            B 使用它創(chuàng)建的對(duì)象或?qū)ο髷?shù)組,可以使用運(yùn)算符delete刪除

            C 使用它創(chuàng)建對(duì)象時(shí)要調(diào)用構(gòu)造函數(shù)

            D 使用它創(chuàng)建對(duì)象數(shù)組時(shí)必須指定初始值

             

            32、關(guān)于delete運(yùn)算符的下列描述中,     C   是錯(cuò)誤的。

            A 它必須用于new返回的指針

            B 它也適用于空指針

            C 對(duì)一個(gè)指針可以使用多次該運(yùn)算符

            D 指針名前只用一對(duì)方括號(hào),不管所刪除數(shù)組的維數(shù)

             

            繼承和派生

            33C++中的類有兩種用法:一種是類的實(shí)例化,即生成類的對(duì)象,并參與系統(tǒng)的運(yùn)行;另一種是通過(guò)________,派生出新的類。

            A 復(fù)用          B 繼承          C 單繼承       D 多繼承

            //答案:B  

             

            34、繼承具有_______,即當(dāng)基類本身也是某一個(gè)類的派生類時(shí),底層的派生類也會(huì)自動(dòng)繼承間接基類的成員。

            A 規(guī)律性       B 傳遞性       C 重復(fù)性       D 多樣性

            //答案:

             

            35、派生可以分為①________②_________。由②________得到的派生類,其基類的所有公有成員都只能成為它的私有成員,這些私有成員只能被派生類的成員函數(shù)訪問(wèn),而③________無(wú)權(quán)訪問(wèn);①________的意義是基類中所有公有成員在派生類中也都是公有的。

            A 公有派生          B 派生類的使用者       C 私有派生          D 派生類的構(gòu)造函數(shù)

            //答案:①A②C③B  

             

            36、基類的①________不能為派生類的成員訪問(wèn),基類的②_______在派生類中的性質(zhì)和繼承的性質(zhì)一樣,而基類的③_______在私有繼承時(shí)在派生類中成為私有成員函數(shù),在公有和保護(hù)繼承時(shí)在派生類中仍為保護(hù)成員函數(shù)

            A 公有成員          B 私有成員          C 私有成員函數(shù)          D 公有成員函數(shù)

            //答案:① B②A③D   

             

            37、子類的數(shù)據(jù)成員和成員函數(shù)除了有從父類繼承而來(lái)的外,還有:         

            子類不能擁有自己的數(shù)據(jù)成員和成員函數(shù)

            子類可以新添自己的數(shù)據(jù)成員,但成員函數(shù)只能從父類繼承

            子類可以新添自己的成員函數(shù),但數(shù)據(jù)成員只能從父類繼承

            子類可以擁有自己獨(dú)特的數(shù)據(jù)成員和成員函數(shù)

            //答案:D  

             

            38、在構(gòu)造一個(gè)類的對(duì)象時(shí),如果該類是從另一個(gè)類繼承的,則構(gòu)造函數(shù)的調(diào)用順序是   

            A  同類的繼承關(guān)系無(wú)關(guān)

            先調(diào)用父類的構(gòu)造函數(shù),然后調(diào)用本類的構(gòu)造函數(shù)

            先調(diào)用本類的構(gòu)造函數(shù),然后調(diào)用父類的構(gòu)造函數(shù)

            不用調(diào)用構(gòu)造函數(shù)

            //答案:B  

             

            39、在析構(gòu)一個(gè)類的對(duì)象時(shí),如果該類是從另一個(gè)類繼承的,則析構(gòu)函數(shù)的調(diào)用順序是   

            同類的繼承關(guān)系無(wú)關(guān)

            先調(diào)用父類的析構(gòu)函數(shù),然后調(diào)用本類的析構(gòu)函數(shù)

            先調(diào)用本類的析構(gòu)函數(shù),然后調(diào)用父類的析構(gòu)函數(shù)

            不用調(diào)用析構(gòu)函數(shù)

            //答案:C


            重載、多態(tài)和虛函數(shù)

            40、下列運(yùn)算符中,________運(yùn)算符在C++中不能重載。

            A ?:             B +           C –              D <=

            //答案:A  

             

            41、下列運(yùn)算符中,________運(yùn)算符在C++中不能重載。

            A &&            B [ ]                     C ::            D new

            //答案:C  

             

            42、如果一個(gè)類至少有一個(gè)純虛函數(shù),那么就稱該類為________

            A 抽象類       B 虛基類              C 派生類       D 以上都不是

            //答案:A   

             

            43、下列描述中,________是抽象類的特性。

            A 可以說(shuō)明虛函數(shù)

            B 可以進(jìn)行構(gòu)造函數(shù)重載

            C 可以定義友元函數(shù)

            D 不能說(shuō)明其對(duì)象

            //答案:

             

            44、關(guān)于動(dòng)態(tài)聯(lián)編的下列描述中,________是錯(cuò)誤的。

            A 動(dòng)態(tài)聯(lián)編是以虛函數(shù)為基礎(chǔ)的

            B 動(dòng)態(tài)聯(lián)編是在運(yùn)行時(shí)確定所調(diào)用的函數(shù)代碼的

            C 動(dòng)態(tài)聯(lián)編調(diào)用函數(shù)操作是指向?qū)ο蟮闹羔樆驅(qū)ο笠?/span>

            D 動(dòng)態(tài)聯(lián)編是在編譯時(shí)確定操作函數(shù)的

            //答案:

             

            45、關(guān)于虛擬成員函數(shù),以下敘述正確的是________

            A 析構(gòu)函數(shù)同構(gòu)造函數(shù)一樣,不能是虛擬的

            B 在一個(gè)類中被定義為虛擬的成員函數(shù),其所有的派生類中相同的成員函數(shù)都是虛擬的

            C 帶有虛擬函數(shù)的類不能直接生成對(duì)象,只有其子類才能生成對(duì)象

            D 虛擬成員函數(shù)同普通成員函數(shù)不同,不能調(diào)用父類的虛擬成員函數(shù)

            //答案:

             

             

            46、關(guān)于虛函數(shù)的描述中,              是正確的

            虛函數(shù)是一個(gè)static類型的成員函數(shù)

            虛函數(shù)是一個(gè)非成員函數(shù)

            基類中說(shuō)明了虛函數(shù)后,派生類中與其對(duì)應(yīng)的函數(shù)可不必說(shuō)明為虛函數(shù)

            派生類的虛函數(shù)與基類的虛函數(shù)具有不同的參數(shù)個(gè)數(shù)和類型

            //答案:C  

             


            填空題:

            C++概述

             

            47、寫(xiě)出除class private protectedpublic之外的任意五個(gè)C++新增的關(guān)鍵字                                                                 

            參考//答案:catch, ,const,delete,friend,new,operator, template,this,throw,try,virtual 

             

            48_____________是指一種事物保留了另一種事物的全部特征,并且有自身的獨(dú)有特征。

            //答案:繼承 

             

            49C++語(yǔ)言中使用函數(shù)重載、模板、__________等概念來(lái)支持多態(tài)性。

            //答案:虛函數(shù) 

             

            50、在C++中有兩種類型的注釋,一種是C語(yǔ)言中使用的注釋符(/*···*/),另一種是______

            //答案://

             

            51、在C++類中可以包含__________________三種具有不同訪問(wèn)控制權(quán)的成員。

            //答案:publicprotectedprivate

             

             


            類和對(duì)象

            52、類中的數(shù)據(jù)和成員函數(shù)默認(rèn)類型為_________

            //答案:私有

             

            53、任何類中允許有三種權(quán)限的數(shù)據(jù)成員                           

            //答案: public   private   protected  

             

            54、靜態(tài)數(shù)據(jù)成員在定義或說(shuō)明時(shí)前面要加上關(guān)鍵字         

            //答案:static

             

            55、以下程序運(yùn)行的結(jié)果_________

            #include “iostream.h”

            class CSample

            {

                   private:

                   int i;

                   public:

                   CSample();

                   CSample(int val);

                   void Display();

                   ~CSample();

            };

            CSample::CSample()

            {

                   cout << “Constructor1” << endl;

                   i=0;

            }

            CSample:: CSample(int val)

            {

            cout << “Constructor2” << endl;

                   i=val;

            }

            void CSample::Display()

            {

                   cout << ”i=” << i << endl;

            }

            CSample::~CSample()

            {

                   cout << “Destructor” << endl;

            }

            void main()

            {

                   CSample a, b(10);

            a.Display();

                   b.Display();

            }

            //答案:

            Constructor1

            Constructor2

            i=0

            i=10

            Destructor

            Destructor

             

            56、以下程序執(zhí)行的結(jié)果是_____________________

            #include <iostream.h>

            class B

            {

                   int x,y;

            public:

                   B() {x = y = 0; cout << “Constructor1” << endl;}

                   B(int i) {x = i; y = 0; cout << “Constructor2” << endl;}

                   B(int i ,int j) {x = i; y = j; cout << “Constructor3” << endl;}

                   ~B() {cout << “Destructor” << endl;}

                   void print() {cout << “x=” << x << “,y=” << y << endl;}

            };

            void main()

            {

                   B *ptr;

                   ptr = new B[3];

                   ptr[0] = B();

                   ptr[1] = B(5);

                   ptr[2] = B(2,3);

                   for (int i=0;i<3;i++)

                          ptr[i].print();

                   delete[] ptr;

            }

            //答案:

            Constructor1

            Constructor1

            Constructor1

            Constructor1

            Destructor

            Constructor2

            Destructor

            Constructor3

            Destructor

            x=0,y=0

            x=5,y=0

            x=2,y=3

            Destructor

            Destructor

            Destructor

             

            57、以下程序執(zhí)行的結(jié)果是_____________________

            class B{  

            int x,y;

            public:

                   B() {x = y = 0; cout << "Constructor1" << endl;}

                   B(int i) {x = i; y = 0; cout << "Constructor2" << endl;}

                   B(int i ,int j) {x = i; y = j; cout << "Constructor3" << endl;}

                   ~B() {cout << "Destructor" << endl;}

                   void print() {cout << "x=" << x << ",y=" << y << endl;}

            };

            void main(){

                   B *ptr;

                   ptr = new B[2];       ptr[0] = B();

                   ptr[1] = B(5);               delete[] ptr;

            }

            //答案:Constructor1 

             Constructor1   

            Constructor1   

            Destructor     

            Constructor2   

            Destructor       

            Destructor        

            Destructor        

             

             

            58、以下程序執(zhí)行結(jié)果是_____________

            #include <iostream.h>

            class A

            {

            public:

                   A(int i=0) {m = i; cout << "Constructor" << m << endl; }

                   void set(int i) {m = i;}

                   void print() const {cout << m << endl;}

                   ~A() {cout << "Destructor" << m << endl;}

            private:

                   int m;

            };

            void fun(const A &c)

            {

                   c.print();

            }

            void main()

            {

                   fun(5);

            }

            //答案:

            Constructor5

            5

            Destructor5


            繼承和派生

            59、以下程序執(zhí)行結(jié)果是________________

            #include <iostream.h>

            class A

            {

            public:

                   A(int i, int j) {a = i; b = j;}

                   void move (int x, int y) {a += x; b += y;}

                   void show() { cout << “(“ << a << “,” << b << “)” << endl;}

            private:

                   int a, b;

            };

            class B:private A

            {

            public:

                   B(int i, int j, int k, int l):A(i, j)

                   {

                          x =k; y = l;

            }

            void show()

            { cout << x << “,” << y << endl;}

            void fun() {move (3,5);}

            void f1() { A::show();}

            private:

                   int x, y;

            };

            void main()

            {

                   A   e(1,2);

                   e.show();

                   B   d(3,4,5,6);

                   d.fun();

                   d.show();

                   d.f1();

            }

            //答案:(1,2)

                   5,6

                   (6,9)

             

            void main()

            {

                   A   e(1,2);

                   e.show();

                   B   d(3,4,5,6);

                   d.fun();

                   d.A::show();

             d.B::show();

                   d.f1();

            }

            //答案: (1,2)

                   (6,9)

                   5,6

                   (6,9)

             

            60、以下程序執(zhí)行結(jié)果是________________

            # include <iostream.h>  

            class A {

                int a;

            public:

                A(int aa=0) { a=aa; }

                ~A() { cout <<"Destructor A!"<<a<<endl;  }

            };

            class B:public A {

                int b;

            public:

                B(int aa=0,int bb=0):A(aa) { b=bb; }

                ~B() { cout <<"Destructor B!"<<b<<endl; }

            };

            void main() {

                B x(5),y(6,7);  // 后定義的變量將先被釋放

            }

            //答案:

            Destructor  B!  7

            Destructor  A!  6

            Destructor  B!  0

            Destructor  A!  5


            重載多態(tài)和虛函數(shù)

            61、以下程序執(zhí)行結(jié)果是________________

            #include <iostream.h>

            class base

            {

            public:

                   base()

            {

            cout << “構(gòu)造base子對(duì)象” << endl;

            f();

            }

            virtual void f()

            {

                   cout << “調(diào)用base::f()” << endl;

            }

            };

            class derived : public base

            {

            public:

                   derived()

                   {

                   cout << “構(gòu)造derived對(duì)象” << endl;

                   f();

            }

            void f()

            {

                   cout << “調(diào)用derived :: f()” << endl;

            }

            };

            void main()

            {

                   derived d;

            }

            //答案:

            構(gòu)造base子對(duì)象

            調(diào)用base::f()

            構(gòu)造derived對(duì)象

            調(diào)用derived :: f()

             

            62、以下程序執(zhí)行結(jié)果是________________

            #include <iostream.h>

            class base

            {

            public:

                   base() {

            cout << “Constructor base subobject” << endl;

            f(); }

            virtual void f()       {

                   cout << “Call base::f()” << endl;   }

            };

            class derived : public base

            {

            public:

                   derived() {

                   cout << “Constructor derived object” << endl;

                   f(); }

            void f()   {

                   cout << “Call derived :: f()” << endl;   }

            };

            void main(){

                   derived d;

            }

            //答案:

            Constructor base subobject      

            Call base::f()              

            Constructor derived object  

            Call derived :: f()         

             

             

            63、以下程序執(zhí)行結(jié)果是________________

            #include <iostream.h>

            class Sample

            {

            private:

                   int x;

            public:

                   Sample() {x = 0;}

                   void disp()

                   {

                   cout << “x=” << x << endl;

            }

            void operator ++() {x += 10;}

            };

            void main()

            {

                   Sample obj;

                   obj.disp();

            obj ++;

            cout << “執(zhí)行obj++之后” << endl;

            obj.disp();

            }

            //答案:

            x=0

            執(zhí)行obj++之后

            x=10

             

             

            64、以下程序執(zhí)行結(jié)果  

            #include <iostream.h>

            class base

            {

            public:

                   virtual void f1()

                   { cout<<"f1 fuc of base"<<endl;}

                   virtual void f2()

                   { cout<<"f2 fuc of base"<<endl;}

                   virtual void f3()

                   { cout<<"f3 fuc of base"<<endl;}

                   void f4()

                   { cout<<"f4 fuc of base"<<endl;}

            };

             

            class derive : public base

            {

                   void f1()

                   { cout<<"f1 fuc of derive"<<endl;}

                   void f2(int x)

                   { cout<<"f2 fuc of derive"<<endl;}

                   void f4()

                   { cout<<"f4 fuc of derive"<<endl;}

            };

             

            void main()

            {

                   base obj1, *p;

                   derive obj2;

                   p = &obj1;

                   p->f1();

                   p->f2();

                   p->f3();

                   p = &obj2;

                   p->f1();

                   p->f2();

                   p->f4();

            }

             

            //答案:

                f1 fuc of base

                f2 fuc of base

                f3 fuc of base

                f1 fuc of derive

                f2 fuc of base

            f4 fuc of base


            解析題:

            *65、指出程序中的錯(cuò)誤,并予以改正(全部重寫(xiě))

            #include “iostream.h”

            class point

            {int x1;

            public:

            int x2;

            public:

            point(int x, int y);

            //......

            };

            void main()

            {     point data(5,5);

                   cout << data.x1 << endl;

                   cout << data.x2 << endl;

            }

            //答案:構(gòu)造函數(shù)定義不正確main()中對(duì)數(shù)據(jù)成員x1訪問(wèn)不正確

            改正:

            #include “iostream.h”

            class point

            {int x1;

            public:

            int x2;

            public:

            point(int x)

            {

                   x1=x;

            }

            void disp()

            {

                   cout << x1 << endl;

            }

            };

            void main()

            {

                   point data(5);

                   data.disp();

                   cout << data.x2 << endl;

            }

            #include “iostream.h”

            class point

            {

                   int x1;

            public:

            int x2;

            public:

            point(int x)

            {

                   x1=x;

            }

            int disp()

            {

                   return x1;

            }

            };

            void main()

            {

                   point data(5);

                   cout << data.disp() << endl;

                   cout << data.x2 << endl;

            }

             

             

             

            66、分析以下程序的執(zhí)行的順序以及輸出結(jié)果

            #include "iostream.h"

             

            class Sample

            {

            public:

                   Sample()

                   {

                          cout << "構(gòu)造函數(shù)" << endl;

                   }

             

            };

             

            void fn(int i)

            {

                   static Sample c;

                   cout << "i=" << i << endl;

             

            }

             

            void main()

            {

                   fn(10);

                   fn(20);

            }

             

            //答案:

            程序中fn(int i)函數(shù)中的static Sample c; 語(yǔ)句定義的是一個(gè)靜態(tài)對(duì)象,僅在函數(shù)第一次進(jìn)入時(shí)創(chuàng)建該對(duì)象,以后在進(jìn)入時(shí),c對(duì)象便始終存在,fn(int i)函數(shù)不再為其創(chuàng)建,所以程序執(zhí)行結(jié)果如下:

            構(gòu)造函數(shù)

            i=10

            i=20

             

             

            67、給出程序執(zhí)行結(jié)果 

            #include <iostream.h>

            class MyDataType

            {

            protected:

                   int m_nData;

            public:

                   MyDataType( )    {

                                 m_nData = -1;

                                 cout << "Constructor MyDataType" << endl;              }

                   MyDataType & operator = (int n) {

                                 m_nData = n;

                                 return *this;           }

                   MyDataType & operator = (MyDataType & obj)      {

                                 m_nData = obj.m_nData;

                                 return *this;           }

                   MyDataType & operator + (MyDataType & obj2)       {

                                 static      MyDataType tempData;

                                 tempData = m_nData + obj2.m_nData;

                                 return tempData;           }

                   operator int()        {      return m_nData;     }//定義一個(gè)從MyDataType類型到int類型的轉(zhuǎn)換

            };

            void main()

            {

                   MyDataType Obj1,Obj2;

                   Obj1 = 10;

                   Obj2 = Obj1;

                   MyDataType Obj3 = Obj1 + Obj2;

                   int nValue = (int)Obj3;

                   cout << "nValue = " << nValue << endl;

            }

             

            //答案:

                   Constructor MyDataType

            Constructor MyDataType

            Constructor MyDataType

            nValue = 20

             

             

            68指出程序中的錯(cuò)誤,改正并簡(jiǎn)述原因

            #include <iostream.h>

            class Base

            {

            public:

                   void SetX(int i) {x = i;}

                   int GetX() {return x;}

            private:

                   int x;

            };

            class Derived : public Base

            {

            public:

                   void SetY(int i) {y = i;}

                   int GetY() {return y;}

            private:

                   int y;

            };

            void main()

            {

                   Base *p;

                   Base b_ob;

                   Derived d_ob;

                   p = &b_ob;

                   p->SetX(11);

                   cout << "base object x:" << p->GetX() << endl;

                   p = &d_ob;

                   p->SetX(55);

                   cout << "base object x:" << p->GetX() << endl;

                   p->SetY(99);

                   cout << "derived object y:" << p->GetY() << endl;

            }

             

            //答案:p->SetY(99)是錯(cuò)誤的,改為d_ob.SetY(99)

            基類指針雖然可以指向派生類的對(duì)象,但是只可以訪問(wèn)派生類中從該基類繼承下來(lái)的的那些成員(如GetX())。基類指針指向的對(duì)象只認(rèn)識(shí)基類,而不知道關(guān)于派生類的成員信息。

             

            69、分析程序給出運(yùn)行結(jié)果

            #include <iostream.h>

             

            class Base

            {

            public:

                   virtual void show()

                   {cout<<"Parent class.\n";}

            };

             

            class First: public Base

            {

            public:

                   void show()

                   {cout<<"First Derived class.\n";}

            };

             

            class Second :public Base

            {

            public:

                   void show()

                   {cout<<"Second Derived class.\n";}

            };

             

            void main()

            {

                   Base b1, *ptr;

                   First f1;

                   Second s1;

                   ptr = &b1;

                   ptr->show();

                   ptr = &f1;

                   ptr->show();

                   ptr = &s1;

                   ptr->show();

            }

             

            //答案:

            Parent class.

            First Derived class.

            Second Derived class.

             

            70、分析程序給出運(yùn)行結(jié)果,說(shuō)明原因

            #include <iostream.h>

             

            class Base

            {

            public:

                   void show()

                   {cout<<"Parent class.\n";}

            };

             

            class First: public Base

            {

            public:

                   void show()

                   {cout<<"First Derived class.\n";}

            };

             

            class Second :public Base

            {

            public:

                   void show()

                   {cout<<"Second Derived class.\n";}

            };

             

            void main()

            {

                   Base b1, *ptr;

                   First f1;

                   Second s1;

                   ptr = &b1;

                   ptr->show();

                   ptr = &f1;

                   ptr->show();

                   ptr = &s1;

                   ptr->show();

            }

             

            //答案:

            Parent class.

            Parent class.

            Parent class.

            由于基類中show函數(shù)沒(méi)聲明成虛函數(shù),這時(shí)的函數(shù)調(diào)用是在編譯時(shí)靜態(tài)聯(lián)編的。

             


            posted on 2011-05-31 22:05 DoubleW 閱讀(2749) 評(píng)論(0)  編輯 收藏 引用

            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            <2025年8月>
            272829303112
            3456789
            10111213141516
            17181920212223
            24252627282930
            31123456

            常用鏈接

            留言簿(3)

            隨筆檔案(12)

            文章檔案(2)

            最新隨筆

            搜索

            •  

            積分與排名

            • 積分 - 29233
            • 排名 - 664

            最新隨筆

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            亚洲国产另类久久久精品| 青青草原综合久久大伊人| 青青草原综合久久大伊人精品| 久久这里只有精品久久| 久久天天躁狠狠躁夜夜2020老熟妇| 久久笫一福利免费导航| 久久精品草草草| 亚洲中文字幕无码久久2017| 欧美激情精品久久久久| 伊人色综合久久天天| 亚洲狠狠婷婷综合久久久久| 久久久久久亚洲精品不卡| 激情久久久久久久久久| 亚洲成色999久久网站| 久久亚洲国产精品一区二区| 99久久精品国产高清一区二区| 狠狠色丁香婷综合久久| 18岁日韩内射颜射午夜久久成人| 亚洲精品高清久久| 久久93精品国产91久久综合| 青青青国产精品国产精品久久久久 | 亚洲日韩中文无码久久| 久久99精品久久久大学生| 麻豆成人久久精品二区三区免费| 色婷婷综合久久久久中文一区二区 | 四虎影视久久久免费观看| 国产99久久久国产精品小说| 一本一本久久A久久综合精品 | 免费无码国产欧美久久18| 国产精品9999久久久久| 久久国产高清一区二区三区| 色老头网站久久网| 久久99精品久久久久久噜噜| 日产精品久久久久久久| 亚洲国产成人久久综合一区77| 久久99精品国产99久久| 久久精品国产精品青草| 激情伊人五月天久久综合| 久久久久人妻一区精品性色av | 97精品依人久久久大香线蕉97| 久久影视综合亚洲|