《C與面向?qū)ο蟪绦蛟O(shè)計》習(xí)題摘錄_第1頁
《C與面向?qū)ο蟪绦蛟O(shè)計》習(xí)題摘錄_第2頁
《C與面向?qū)ο蟪绦蛟O(shè)計》習(xí)題摘錄_第3頁
《C與面向?qū)ο蟪绦蛟O(shè)計》習(xí)題摘錄_第4頁
《C與面向?qū)ο蟪绦蛟O(shè)計》習(xí)題摘錄_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、一、填空題.派生類的主要用途是可以定義其基類中_ 數(shù)據(jù)成員_。1. 當(dāng)建立_,程序自動調(diào)用該類的構(gòu)造函數(shù)。2. 定義重載函數(shù)時,應(yīng)在_參數(shù)類型或參數(shù)個數(shù)_上有所不同。3. 類是用戶定義的類型,具有類類型的變量稱作_對象_。4. 當(dāng)一個成員函數(shù)被調(diào)用時,該成員函數(shù)的_this指針_指向調(diào)用它的對象。5. 拷貝函數(shù)通過_使用引用來初始化創(chuàng)建中的對象。6. 在C+中有二種_方式即值傳遞和_傳址_傳遞。7. 函數(shù)的_多態(tài)性_性通過虛函數(shù)來實現(xiàn)的。8. 使用空的虛函數(shù)可以保證_建立起一條存取路徑,使派生類通過虛函數(shù)機制正確存取虛函數(shù)。二、判斷題1. 說明函數(shù)類型時不需要指明每個函數(shù)參數(shù)的名字,只需要說明

2、每個參數(shù)的類型和函數(shù)返回值類型就可以了。.( T )2. 基類中被說明為protected 和private的成員只能被其派生類的成員函數(shù)訪問,不能被其它的函數(shù)訪問。.( F )3. 當(dāng)將一個S定義為另一個類A的友元類時,類S的所有成員函數(shù)都可以直接訪問類A的所有成員。( )4. 如果派生類的成員函數(shù)的原型與基類中被定義為虛函數(shù)的成員函數(shù)原型相同,那么,這個函數(shù)自動繼承基類中虛函數(shù)的特性。( )5. 如果使用基類指針或引用指向派生類對象并使用該指針調(diào)用虛函數(shù),則程序動態(tài)地(運行時)選擇該派生類的虛函數(shù),這種聯(lián)編方法稱為動態(tài)聯(lián)編。.( )三、選擇題1. 程序中有錯誤的地方已用“(1)”到“(5)

3、”指出,在下面給出的到五條出錯原因中,正確地填上對應(yīng)號。 指針指向?qū)ο髸r,不能直接用對象名,要加地址符“&”。對應(yīng)號為“(_)” 不允許派生類的指針指向基類對象。對應(yīng)號為“(_)” 基類指針不允許指向私有派生類的對象。對應(yīng)號為“(_)” 調(diào)用指針的對象的成員函數(shù)時,寫法出錯。對應(yīng)號為“(_)” 基類指針允許指向派生類的對象,但不能訪問派生類新成員。對應(yīng)號為“(_)” #include<iostream.h>class base public: virtual void show( ) ;class derive1: public base public: void show

4、( ) void print( ) ;class derive2: private base public: void show( ) ;void main( )base obj1, obj2, *prt1;derive1 obj3, obj4, *prt2;derive2 obj5;prt1=obj1;(1)prt1show( );prt1=&obj3;prt1.show( );(2)prt1print( );(3)prt1=&obj5;(4)prt2=&obj4;prt2show( );prt2=&obj2;(5)prt2show( );2. 程序中有錯誤的

5、地方已用“(1)”到“(5)”指出,在下面給出的到五條出錯原因中,正確地填上對應(yīng)號。 私有繼承后該函數(shù)是派生類的私有成員,外部函數(shù)不能訪問。對應(yīng)號為“(_)” 不論公有派生或私有派生,派生類都不能用基類私有成員。對應(yīng)號為“(_)” 因為該類有構(gòu)造函數(shù),定義對象時不能缺省參數(shù)。對應(yīng)號為“(_)” 派生類新增加的私有成員,外部函數(shù)不能直接訪問。對應(yīng)號為“(_)” 私有成員,外部函數(shù)不能直接訪問。對應(yīng)號為“(_)”#include<iostream.h>class x int a,b;public:x(int a1=0, int b1=0) a=a1; b=b1;int get1( )

6、return a+b;class y:private x int c; public: y(int a1, int b1, int c1): x(a1,b1) c=c1; int get2( ) return a+b+c;(1) int get3( ) return c;void main( )x x1; y y1;(2)y y2(3,4,5);cout << x1.a << “n”;(3)cout << y2.c <<“n”;(4)x1.get1( );y1.get1( );(5)y1.get3( );1. 按面向?qū)ο蟮恼f法,為一個類而定義的所

7、有操作稱之為( )A函數(shù) B過程C方法 D屬性2. 在C+程序中,如果一個對象要引用自身,應(yīng)該( )A通過另一個對象 B不允許 C用this指針 D用類名3. C+中,虛擬函數(shù)主要用于支持( )的實現(xiàn)。A多態(tài)性 B繼承 C多繼承 D封裝4. 在 C+ 程序中,對象之間的相互通信通過 A. 繼承實現(xiàn) B. 調(diào)用成員函數(shù)實現(xiàn) C. 封裝實現(xiàn) D. 函數(shù)重載實現(xiàn) 5. 構(gòu)造函數(shù)不具備的特征的是 A. 構(gòu)造函數(shù)的函數(shù)名與類名相同 B. 構(gòu)造函數(shù)可以重載 C. 構(gòu)造函數(shù)可以設(shè)置默認參數(shù) D. 構(gòu)造函數(shù)必須指定類型說明 6. 通常,拷貝構(gòu)造函數(shù)的參數(shù)是 A. 某個對象名 B. 某個對象的成員名 C. 某個

8、對象的引用名 D. 某個對象的指針名 7. 繼承機制的作用是 A. 信息隱藏 B. 數(shù)據(jù)封裝 C. 定義新類 D. 數(shù)據(jù)抽象 8. 類的析構(gòu)函數(shù)的作用是 A. 一般成員函數(shù) B. 類的初始化 C. 對象的初始化 D. 刪除對象創(chuàng)建的所有對象 9. 下列不是描述類的成員函數(shù)的是 A. 構(gòu)造函數(shù) B. 析構(gòu)函數(shù) C. 友元函數(shù) D. 拷貝構(gòu)造函數(shù)10. 在 C+ 中,函數(shù)原型不能標(biāo)識 A. 函數(shù)的返回類型 B. 函數(shù)參數(shù)的個數(shù) C. 函數(shù)參數(shù)類型 D. 函數(shù)的功能 11. 下面說法正確的是 ( ) A. 內(nèi)聯(lián)函數(shù)在運行時是將該函數(shù)的目標(biāo)代碼插入每個調(diào)用該函數(shù)的地方 B. 內(nèi)聯(lián)函數(shù)在編譯時是將該函數(shù)

9、的目標(biāo)代碼插入每個調(diào)用該函數(shù)的地方 C. 類的內(nèi)聯(lián)函數(shù)必須在類體內(nèi)定義 D. 類的內(nèi)聯(lián)函數(shù)必須在類體外通過加關(guān)鍵字 inline 定義12. 類的析構(gòu)函數(shù)是在 調(diào)用的。 A. 類創(chuàng)建時 B. 創(chuàng)建對象時 C. 刪除對象時 D. 不自動調(diào)用13. 已知類 X是類 Y 的友元,類 Y 是類 Z 的友元,則 A. 類X一定是類Z的友元 B. 類Z一定是類Z的友元 C. 類Z的成員函數(shù)可以訪問類Y的對象的任何成員D. 類X的成員函數(shù)可以訪問類Y的對象的任何成員14. 靜態(tài)成員函數(shù)沒有 A. 返回值 B. this 指針C. 指針參數(shù) D. 返回類型15. 在公有派生情況下,有關(guān)派生類對象和基類對象的關(guān)

10、系,不正確的敘述是 ( ) A. 派生類的對象可以賦給基類的對象 B. 派生類的對象可以初始化基類的引用 C. 派生類的對象可以直接訪問基類中的成員 D. 派生類的對象的地址可以賦給指向基類的指針 四、問答題1. 閱讀下面的程序找一處錯line01:class Locationline02: int x,y;line03: int length,height;line04: protected:line05: int SetZero(int zeroX,int XeroY);line06: public:line07: void Location (int initX,int initY);l

11、ine08: int getx();line09: int gety();line10:;答:2. 寫出程序運行的結(jié)果#include <iostream.h>#include <srting>class srtc1 char *srt; pbulic:strcl(char * st) cout<<”現(xiàn)在進入了strc1類的構(gòu)造函數(shù)”<<end1;str=new charstrlen (st) + 1;strcpy(str, st); void show1( ) cout <<”name:”<<str;class girl

12、 strc1 name; int age;public:girl(char *st, int n):name(st) cout<<”現(xiàn)在進入了girl類的構(gòu)造函數(shù)”<<end1;age=n; int show2( ) name.show1( ); cout <<” age:”; return age;class woman:public girl floac wight;public:woman(char *st, int n, float w):girl(sr, n) cout<<”現(xiàn)在進入了woman類的構(gòu)造函數(shù)”<<end1;w

13、ight=w;void print( ) cout <<show2( )<<” wight:”<<wight<<end1;void main( )woman w1("zhang_fun", 40, 50.5); w1.print;答:3. 寫出程序運行的結(jié)果#include <iostream.h>class Time char a9; int hours; int minutes; int senconds;public:Time(int s=0, int m=0, int h=0)hours=h;minutes

14、=m;seconds=s;void show( )cout<<"時間:"<<hours<<":"<<minutes<<":"<<seconds<<endl; friend Time operator + (Time t1, Time t2);Time opreator +(Time t1, Time t2)Time temp;temp.hours = t1.hours + t2.hours;temp.minutes = t1.minutes + t2.

15、minutes;temp.seconds = t1.seconds + t2.seconds;if(temp.seconds > 60)temp.senconds = temp.seconds - 60; temp.minutes+; if(temp.minutes > 60) temp.minutes = temp.minutes - 60;temp.hours+;if(temp.hours >=24) temp.hours = temp.hours - 24;return temp;void main( )Time T, T1(20, 23, 21), T2(10, 25

16、, 15), T3(5, 10, 15);T = T1 + T2;T.show( );T = T1 + T3;T.show( );答:4. 閱讀下面程序,回答題后的問題/*#include<iostream.h>class A private: /其他成員 static int object_count;public: A()A:object_count+; A A:object_count-;int GetObjectCount()return A:object_count; virtual void func(int data) cout<<”class A:”&l

17、t;<data<<endl; void func(char *str) cout<<”class A:”<<str<<endl; ;int A:object_count;class B:public A /其他成員 public: void func() cout<<”function in B without parameter!n”; void func(int data) cout<<”class B:”<<data<<endl; void func(char *str) cout<

18、;<”class B:”<<str<<endl; ;int main(int argc,char * argv ) A *pA; B b; pA=&b; pAàfunc(1); pAàfunc(“haha”); return 0; /*問題1、在下面寫出程序的運行結(jié)果:問題2、用下面的語句在函數(shù)main()中通過調(diào)用類B中定義的參數(shù)表為空的函數(shù)func():pAàfunc();是否正確?答:(正確/不正確)問題3、如果要記錄已經(jīng)創(chuàng)建的A類的實例(對象)的個數(shù),我們可以借助于類的靜態(tài)成員。修改上面類A的定義,使得它包含一個私有的

19、靜態(tài)成員object_count,記錄屬于該類的對象個數(shù),然后為類A增加必要的成員函數(shù),使得下面的程序:void main() A *pA=new A3;cout<<”There are”<<pAàGetObjectCount()<<”objects”<<endl; delete pA; cout<<”There are”<<pA:GetObjectCount()<<”objects”<<endl;得到的輸出為: there are 3 object there are 0 object在

20、下面寫出類A的定義(將所有的函數(shù)成員實現(xiàn)寫在類定義體中):在下面寫出初始化類的靜態(tài)成員object_count的語句:5. 下面的程序定義了一個簡單的SmallInt類,用來表示從-128 到127之間的數(shù)據(jù)成員val存放一個-128 到127(包含-128 到127這兩個數(shù))之間的整數(shù),為了方便,類SmallInt還重載了一些運算符。閱讀類SmallInt的定義,回答題目后面的問題。class SmallInt public:SmallInt(int i=0);/重載插入和抽取運算符friend ostream & operator <<(ostream &os,

21、const SmallInt &si);friend ostream & operator >>(ostream &is,const SmallInt &si);/重載算術(shù)運算符SmallInt operator +( const SmallInt &si)return SmallInt(val+si.val);SmallInt operator -( const SmallInt &si)return SmallInt(val-si.val);SmallInt operator *( const SmallInt &si)r

22、eturn SmallInt(val*si.val);SmallInt operator /( const SmallInt &si)return SmallInt(val/si.val);/重載比較運算符bool operator = =( const SmallInt &si)return (val= =si.val);private: char val; ;ostream & operator <<(ostream &os,const SmallInt &si) os<<(int)si.val; return os;ostream & operator >>(ostream &is,const SmallInt &si) int tmp; is>> SmallInt (tmp); return is;問題1:上面的類定義中,重載的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論