《C語言程序設(shè)計》作業(yè)題.doc
《《C語言程序設(shè)計》作業(yè)題.doc》由會員分享,可在線閱讀,更多相關(guān)《《C語言程序設(shè)計》作業(yè)題.doc(36頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、《C++語言程序設(shè)計》作業(yè)題 一、判斷題 ( )1、寫在類體內(nèi)的函數(shù)都是內(nèi)聯(lián)函數(shù)。 ( )2、通常的拷貝初始化構(gòu)造函數(shù)的參數(shù)是某個對象的指針名。 ( )3、重載運(yùn)算符可改變原運(yùn)算符的優(yōu)先級和結(jié)合性。 ( )4、在設(shè)置了默認(rèn)參數(shù)值后,調(diào)用函數(shù)的對應(yīng)實參就必須省略。 ( )5、析構(gòu)函數(shù)是一種函數(shù)體為空的成員函數(shù)。 ( )6、某類的友元類的所有成員函數(shù)可以存取或修改該類中的私有成員。 ( )7、對象數(shù)組的元素可以是不同類的對象。 ( )8、函數(shù)的參數(shù)個數(shù)、類型及位置都相同,只是函數(shù)返回值類型不同,這不是重載函數(shù)。
2、 ( )9、派生類是從基類派生出來的,但它不能再生成新的派生類。 ( )10、構(gòu)造函數(shù)和析構(gòu)函數(shù)都不能重載。 ( )11、在公有繼承中,基類中只有公有成員對派生類的對象是可見的。 ( )12、this指針是一個指向正在被某個成員函數(shù)操作的對象的指針。 ( )13、一維對象指針數(shù)組的每個元素應(yīng)該是某個類的對象的地址值。 ( )14、在C++中,定義函數(shù)時必須給出函數(shù)的類型。 ( )15、析構(gòu)函數(shù)是一種函數(shù)參數(shù)表為空的成員函數(shù)。 ( )16、派生類的繼承方式有兩種:公有繼承和私有繼承。 ( )17、自身類對象的引用不可以作
3、為該類的成員。 ( )18、多重繼承情況下,派生類中對基類成員的訪問不會出現(xiàn)二義性。 ( )19、可以在類的構(gòu)造函數(shù)中對靜態(tài)數(shù)據(jù)成員進(jìn)行初始化。 ( )20、多重繼承情況下,派生類的構(gòu)造函數(shù)的執(zhí)行順序取決于定義派生類時所指定的各基類的順序。 ( )21、在單繼承情況下,派生類中對基類成員的訪問不會出現(xiàn)二義性。 ( )22、轉(zhuǎn)換函數(shù)不是成員函數(shù),它是用來進(jìn)行強(qiáng)制類型轉(zhuǎn)換的。 ( )23、在公有繼承中,基類中的保護(hù)成員對派生類對象是可見的。 ( )24、虛基類是用來解決多繼承中公共基類在派生類中只產(chǎn)生一個基類子對象的問
4、題。 ( )25、在保護(hù)繼承中,基類中的公有成員對派生類對象是可見的。 ( )26、抽象類是指一些不能定義對象的類。 ( )27、虛函數(shù)是用virtual關(guān)鍵字說明的成員函數(shù)。 ( )28、動態(tài)聯(lián)編是在運(yùn)行時選定所要調(diào)用的成員函數(shù)的。 ( )29、聲明派生類時,在派生類的頭部都要明確列出其直接基類和間接基類。 ( )30、在C++中對于運(yùn)算符重載,只能重載已有的運(yùn)算符。 ( )31、在程序中可以直接調(diào)用構(gòu)造函數(shù)。 ( )32、解決多繼承情況下出現(xiàn)的二義性的方法之一是使用作用域運(yùn)算符。 ( )33、函數(shù)重載是一
5、種多態(tài)現(xiàn)象,它屬于動態(tài)聯(lián)編。 ( )34、友元函數(shù)、友元類的聲明可以放在類定義中的任何地方。 ( )35、抽象類是一些不能實例化的類,即不能定義對象的類。 ( )36、const對象不能隨意被修改,但const成員函數(shù)可以修改const對象。 ( )37、拷貝初始化構(gòu)造函數(shù)的參數(shù)只能是對某個對象的引用。 ( )38、類的公有靜態(tài)成員既可以用類的對象訪問,也可以用作用域運(yùn)算符通過類名訪問。 ( )39、拷貝初始化構(gòu)造函數(shù)的參數(shù)可以是某類的對象名。 ( )40、在類體外定義的函數(shù)若沒有關(guān)健字inline說明,則都是外聯(lián)函數(shù)。
6、 ( )41、C++中的所有函數(shù)調(diào)用都是傳引用調(diào)用。 ( )42、析構(gòu)函數(shù)說明為虛函數(shù)是沒有意義的。 ( )43、派生類的構(gòu)造函數(shù)的成員初始化列表中,可以包含基類的子對象初始化。 ( )44、構(gòu)造函數(shù)說明為虛函數(shù)是沒有意義的。 ( )45、對每個可重載的運(yùn)算符來說,它既可以重載為友元函數(shù),又可以重載為成員函數(shù),還可以重載為非成員函數(shù)。 ( )46、C++中的所有函數(shù)調(diào)用都是傳值調(diào)用。 ( )47、使用關(guān)鍵字class定義的類中,缺省的訪問權(quán)限是公有(public)的。 ( )48、使用關(guān)鍵字class定義的類中,缺省的訪問
7、權(quán)限是私有(private)的。 ( )49、如果一個成員函數(shù)只存取類的靜態(tài)數(shù)據(jù)成員,則可將該成員函數(shù)說明為靜態(tài)成員函數(shù)。 ( )50、說明和定義類的對象時,類名前面不需要加class關(guān)鍵字。 二、填空 1、如果一個函數(shù)沒有返回值,定義時需用類型說明符______說明。 2、通常的拷貝初始化構(gòu)造函數(shù)的參數(shù)是___________。 3、對象成員的表示與結(jié)構(gòu)體成員的表示相同,使用運(yùn)算符____或____。 4、已知:p是一個指向類A數(shù)據(jù)成員m的指針,a1是類A的一個對象,如果要給對象a1的數(shù)據(jù)成員m賦值為5,應(yīng)____________賦值。 5、C++中
8、,繼承分為單繼承和_____,而繼承方式可分為_____、______、______。 6、任何類中允許有三種類型的成員,它們分別是______、_______、_______。 7、________能夠用來訪問當(dāng)前作用域內(nèi)與局部變量同名的全局變量。 8、在類內(nèi)部定義的_____和_____成員不能被不屬于該類的成員函數(shù)來存取,定義為______的成員則可以在類外部進(jìn)行存取。 9、靜態(tài)數(shù)據(jù)成員的賦初值是在________進(jìn)行。 10、C++的函數(shù)如果在返回類型、參數(shù)類型、參數(shù)個數(shù)、_______上有所不同,則認(rèn)為是不同的函數(shù)(注:對于同名函數(shù)而言)。 11、如果不能成功地分配所需要
9、的內(nèi)存時,new返回____。 12、在編譯時將所用函數(shù)的代碼嵌入到主調(diào)函數(shù)中,這種函數(shù)稱為________。 13、如果靜態(tài)成員函數(shù)中要引用非靜態(tài)成員時,可通過_____來引用。 14、當(dāng)使用delete運(yùn)算符釋放一個對象時,delete會自動調(diào)用_______。 15、從一個基類派生的繼承為單繼承,從多個基類派生的繼承為_______。 16、多繼承下,可能造成對基類中某個成員訪問的________。 17、如果想要使公共基類在派生類中只產(chǎn)生一個基類子對象,則必須將這個基類設(shè)為______。 18、面向?qū)ο蟪绦蛟O(shè)計的三大特征是封裝性、繼承性和________。 19、多態(tài)從
10、實現(xiàn)的角度來講可以劃分為兩類,編譯時的多態(tài)和_______。 20、將運(yùn)算符++重載為類的友元函數(shù)時,定義前置++有____個參數(shù),而定義后置++有___個參數(shù)。 21、抽象類不能實例化,即不能定義一個抽象類的_______。 22、關(guān)鍵字______、______、______ 和 _______在C++中用來建立新的數(shù)據(jù)類型。 23、定義在類內(nèi)部的函數(shù)為________,編譯器會在調(diào)用該函數(shù)處,將函數(shù)代碼的拷貝在調(diào)用函數(shù)處展開。 24、在類定義時如果沒有定義構(gòu)造函數(shù),編譯系統(tǒng)會自動生成一個_______。 25、類的______成員只能被該類的成員函數(shù)或友元訪問。 26、使關(guān)
11、鍵字class定義的類中缺省的訪問權(quán)限是________。 27、一個類中只可能定義_____個析構(gòu)函數(shù)。 28、當(dāng)一個類的成員是另一個類的對象時,該對象稱為_______。 29、靜態(tài)數(shù)據(jù)成員在定義或說明時前面要加上關(guān)鍵字_______。 30、C++程序必須包含頭文件_________后,才能使用輸入輸出流。 31、在說明const變量時,必須對該變量_______。 32、在需要基類對象的任何地方都可以使用________的對象來代替。 33、帶有純虛函數(shù)的類是________。 34、動態(tài)聯(lián)編可以通過_____或引用所標(biāo)識的對象來操作虛函數(shù)。 35、_____限定符用
12、來聲明只讀變量。 36、公有成員函數(shù)的集合稱為類的_______。 37、重載不能改變運(yùn)算符的_________和_______。 38、運(yùn)算符______動態(tài)分配一個對象。 39、_________能夠定義一個在不同數(shù)據(jù)類型基礎(chǔ)上完成同一任務(wù)的函數(shù)。 40、每個對象都維護(hù)了一個指向自身的指針,這個指針稱為______指針。 41、處于同一層次的各基類構(gòu)造函數(shù)的執(zhí)行順序取決于________所指定的各基類的順序。 42、_______是用來初始化類的數(shù)據(jù)成員的一種特殊的成員函數(shù)。 43、受保護(hù)的成員不能被外界引用,但它可以被派生類的________引用。 44、靜態(tài)聯(lián)編工作是
13、在________階段完成的。 45、在C++中,對虛函數(shù)來說,不能聲明_______,但可以聲明虛析構(gòu)函數(shù) 46、______成員函數(shù)的實現(xiàn)中不能直接引用類中說明的非靜態(tài)成員。 47、const char *p說明了p是指向_______的指針。 48、通常,類的成員函數(shù)的訪問模式是________,數(shù)據(jù)成員的訪問模式是_______。 49、當(dāng)用受保護(hù)的繼承從基類派生一個類時,基類的公有成員成為派生類的______成員,基類的受保護(hù)成員成為派生類的_______成員。 50、如果一個類包含一個或多個純虛函數(shù),則該類為________。 三、選擇題 1、下列有關(guān)類的說法不正確
14、的是________。 ① 類是一種用戶自定義的數(shù)據(jù)類型; ② 只有類中的成員函數(shù)或友元函數(shù)才能存取類中的私有成員; ③ 在類中,如果不作特別說明,所有的數(shù)據(jù)均為私有類型; ④ 在類中,如果不作特別說明,所有的成員函數(shù)均為公有類型; 2、局部變量可以隱藏全局變量,那么在有同名全局變量和局部變量的情形時,可以用_______提供對全局變量的訪問。 ① 作用域運(yùn)算符 ② 指針運(yùn)算符 ③ 提取運(yùn)算符 ④ 插入運(yùn)算符 3、類模板的使用實際上是將類模板實例化成一個具體的________。 ① 函數(shù)
15、 ② 對象 ③ 類 ④ 類的成員
4、下列輸出字符‘d’的方法中,______是錯誤的。
① cout< 16、
④ 變量A與a按位相與作為函數(shù)set( )的參數(shù);
6、派生類的構(gòu)造函數(shù)的成員初始化列表中,不能包含_______。
① 基類的構(gòu)造函數(shù);
② 派生類中子對象的初始化;
③ 基類的子對象初始化;
④ 派生類中一般數(shù)據(jù)成員的初始化;
7、關(guān)于引用,下列的說法中錯誤的是_______。
① 引用是給被引用的變量取一個別名;
② 引用主要是用來作函數(shù)的形參和函數(shù)的返回值;
③ 在聲明引用時,要給它另開辟內(nèi)存單元;
④ 在聲明引用時,必須同時使它初始化;
8、在下列說法中,______不會調(diào)用拷貝初始化構(gòu)造函數(shù)。
① 當(dāng)對象作為函數(shù)實參傳遞給函數(shù)形參時;
② 明確表示由一 17、個對象初始化另一個對象時;
③ 用賦值運(yùn)算符”=”將一個對象賦給另一個同類對象時;
④ 當(dāng)對象作為函數(shù)返回值時;
9、_____是不可以作為某類的成員的。
① 自身類對象的指針 ?、凇∽陨眍惖膶ο?
③ 自身類對象的引用 ?、堋×硪粋€類的對象
10、關(guān)于虛函數(shù)的描述中,_____是正確的。
① 虛函數(shù)是一個static類型的成員函數(shù);
② 虛函數(shù)是一個非成員函數(shù);
③ 基類中說明了虛函數(shù)后,派生類中與其對應(yīng)的函數(shù)可不必說明為虛函數(shù);
④ 派生類的虛函數(shù)與基類的同名虛函數(shù)應(yīng)具有不同的參數(shù)個數(shù)和類型;
11、下列四項選擇中,______不是流類的對象。
18、
① cin ② cout ③ buff ④ cerr
12、下列關(guān)于const限定符的說法中,錯誤的是______。
① const限定符是左結(jié)合的,即它修飾在它左邊的類型;
② 在說明const變量時,必須對該變量進(jìn)行初始化;
③ 與宏定義符號常量的區(qū)別是,const將產(chǎn)生一個具有類型的符號;
④ const變量是常量變量,所以一個const變量可以被多次賦予不同的常量;
13、在下列的各類函數(shù)中,______不是類的成員函數(shù)。
① 構(gòu)造函數(shù) ② 析構(gòu)函數(shù)
③ 友元函數(shù) ?、?/p>
19、 拷貝初始化構(gòu)造函數(shù)
14、_____不是析構(gòu)函數(shù)的特征。
① 一個類中只能定義一個析構(gòu)函數(shù);
② 析構(gòu)函數(shù)名與類名相同;
③ 析構(gòu)函數(shù)只是用來釋放對象,所以析構(gòu)函數(shù)是空函數(shù);
④ 析構(gòu)函數(shù)不指定數(shù)據(jù)類型,并且也沒有參數(shù);
15、下述靜態(tài)數(shù)據(jù)成員的特性中,______是錯誤的。
① 說明靜態(tài)數(shù)據(jù)成員時前面要加修飾符static;
② 靜態(tài)數(shù)據(jù)成員要在類體外進(jìn)行初始化;
③ 在程序中引用公有靜態(tài)數(shù)據(jù)成員時,要在靜態(tài)數(shù)據(jù)成員名前加<類名>和作用域運(yùn)算符;
④ 靜態(tài)數(shù)據(jù)成員是個別對象所共用的;
16、具有轉(zhuǎn)換函數(shù)功能的構(gòu)造函數(shù),應(yīng)該是______。
① 不帶參數(shù)的構(gòu)造函數(shù);
20、
② 帶有一個參數(shù)的構(gòu)造函數(shù);
③ 帶有兩個以上參數(shù)的構(gòu)造函數(shù);
④ 缺省構(gòu)造函數(shù);
17、下列繼承方式中,_____種繼承方式是錯的。
① 公有繼承; ?、凇∷接欣^承;
③ 完全繼承; ?、堋”Wo(hù)繼承;
18、下列對繼承關(guān)系的描述中,______是對的。
① 在公有繼承中,基類中的公有成員和私有成員在派生類中都是可見的;
② 在公有繼承中,基類中只有公有成員對派生類的對象是可見的;
③ 在私有繼承中,基類中只有公有成員對派生類是可見的;
④ 在私有繼承中,基類中的保護(hù)成員對派生類的對象是可見的;
19、對定義重載函數(shù)的下列要求中,__ 21、____是錯誤的。
① 要求參數(shù)的個數(shù)不同;
② 要求參數(shù)中至少有一個類型不同;
③ 要求參數(shù)個數(shù)相同時,參數(shù)類型不同;
④ 參數(shù)個數(shù)和類型相同時,要求函數(shù)的返回值不同;
20、當(dāng)一個函數(shù)無返回值時,定義它時函數(shù)的類型應(yīng)是_______。
① void ② 任意 ③ int ④ 無
21、重載函數(shù)在調(diào)用時選擇的依據(jù)中,錯誤的是________。
① 參數(shù)個數(shù) ?、凇?shù)的類型
③ 參數(shù)的位置 ④ 函數(shù)的返回值類型
22、有關(guān)構(gòu)造函數(shù)的說法不正確的是_______。
① 構(gòu)造函數(shù)的 22、名字和類的名字一樣;
② 構(gòu)造函數(shù)在說明類的對象時自動執(zhí)行;
③ 構(gòu)造函數(shù)無任何函數(shù)類型;
④ 構(gòu)造函數(shù)有且僅有一個;
23、下列的____是函數(shù)的引用調(diào)用。
① 形參是指針,實參是地址值;
② 形參是變量,實參是引用;
③ 形參是指針,實參是數(shù)組名;
④ 形參是引用,實參是變量;
24、在一個被調(diào)用函數(shù)中,關(guān)于return語句使用的描述,_____是錯誤的。
① 被調(diào)用函數(shù)中可以不用return語句;
② 被調(diào)用函數(shù)中可以使用多個return語句;
③ 被調(diào)用函數(shù)中,如果有返回值,就一定要有return語句;
④ 被調(diào)用函數(shù)中,一個return語句可返回多個值給調(diào)用 23、函數(shù);
25、在C++中,關(guān)于下列設(shè)置參數(shù)默認(rèn)值的描述中,______是正確的。
① 不允許設(shè)置參數(shù)的默認(rèn)值;
② 設(shè)置參數(shù)默認(rèn)值只能在定義函數(shù)時設(shè)置;
③ 設(shè)置參數(shù)默認(rèn)值時,應(yīng)該是先設(shè)置右邊的再設(shè)置左邊的;
④ 設(shè)置參數(shù)默認(rèn)值時,應(yīng)該全部參數(shù)都設(shè)置;
26、關(guān)于new運(yùn)算符的下列描述中,______是錯誤的。
① 它可以用來動態(tài)創(chuàng)建對象和對象數(shù)組;
② 使用它創(chuàng)建的對象和對象數(shù)組可以使用運(yùn)算符delete刪除;
③ 使用它創(chuàng)建對象時要調(diào)用構(gòu)造函數(shù);
④ 使用它創(chuàng)建對象數(shù)組時必須指定初始值;
27、運(yùn)算符*的功能是______。
① 用來表示指向?qū)ο笾羔槍χ赶蝾惓蓡T指針 24、的操作;
② 用來表示對象對指向類成員指針的操作;
③ 用來表示指向?qū)ο笾羔槍︻惓蓡T的操作;
④ 用來表示對象對類成員的操作;
28、在一個函數(shù)中,要求通過函數(shù)來實現(xiàn)一種不太復(fù)雜的功能,并且要求加快執(zhí)行速度,選用_____合適。
① 內(nèi)聯(lián)函數(shù) ② 重載函數(shù)
③ 遞歸函數(shù) ④ 嵌套調(diào)用
29、采用函數(shù)重載的目的在于______。
① 實現(xiàn)共享 ② 減少空間
③ 提高速度 ④ 使用方 25、便,提高可讀性
30、下列函數(shù)中,_____不能重載。
① 成員函數(shù) ② 非成員函數(shù)
③ 析構(gòu)函數(shù) ?、堋?gòu)造函數(shù)
31、在下列關(guān)鍵字中,用以說明類中公有成員的是_____。
① public ② private ③ protected ④ friend
32、有關(guān)類和對象的說法下列不正確的有_______。
① 對象是類的一個實例;
② 任何一個對象只能屬于一個具體的類;
③ 一個類只能有一個對象;
④ 類與對象的關(guān)系和數(shù)據(jù)類型與變量的關(guān)系相似;
33、在下列關(guān)于標(biāo)準(zhǔn)輸入流的描述中,正確的是______。
26、① 流提取運(yùn)算符不能自動識別變量的類型,所以要用輸入格式控制串;
② 變量和流提取運(yùn)算符一起使用時,要象scanf函數(shù)那樣在變量前加上&;
③ cin與流提取運(yùn)算符”>>”一起,將從鍵盤輸入的數(shù)送到變量中保存起來;
④ 使用標(biāo)準(zhǔn)輸入流,必須包含頭文件”stdlib.h”;
34、_____是構(gòu)造函數(shù)的特征。
① 構(gòu)造函數(shù)的函數(shù)名與類名不同;
② 一個類中只能定義一個構(gòu)造函數(shù);
③ 構(gòu)造函數(shù)可以設(shè)置缺省參數(shù);
④ 構(gòu)造函數(shù)必須指定類型說明;
35、C++語言中規(guī)定函數(shù)的返回值的類型是由_______。
① return語句中的表達(dá)式類型所決定;
② 調(diào)用該函數(shù)的主調(diào)用函 27、數(shù)類型決定;
③ 調(diào)用該函數(shù)時系統(tǒng)臨時決定;
④ 在定義該函數(shù)時所指定的函數(shù)類型所決定;
36、下列對派生類的描述中,______是錯的。
① 一個派生類可以作為另一個派生類的基類;
② 派生類中繼承的基類成員的訪問權(quán)限到派生類保持不變;
③ 派生類的成員除了它自己的成員外,還包含了它的基類的成員;
④ 派生類至少有一個基類;
37、帶有虛基類的多層派生類構(gòu)造函數(shù)的成員初始化列表中都要列出虛基類的構(gòu)造函數(shù),這樣將對虛基類的子對象初始化_____。
① 與虛基類下面的派生類個數(shù)有關(guān); ② 多次;
③ 二次; ④ 一次;
38、關(guān)于繼承中出現(xiàn)的二義 28、性的描述中,______是錯的。
① 一個派生類的兩個基類中都有某個同名成員,在派生類中對這個成員的訪問可能出現(xiàn)二義性;
② 解決二義性的最常用的方法是對成員名的限定法;
③ 在單繼承情況下,派生類中對基類成員的訪問也會出現(xiàn)二義性;
④ 一個派生類是從兩個基類派生出來的,而這兩個基類又有一個共同的基類,對該基類成員進(jìn)行訪問時,也可能出現(xiàn)二義性;
39、已知f1( )是類A的公有成員函數(shù),p是指向成員函數(shù)f1( )的指針,采用_____是正確的。
① p=f1; ② p=A::f1;
③ p=A 29、::f1( ); ④ p=f1( );
40、關(guān)于動態(tài)聯(lián)編的下列描述中,______是錯誤的。
① 動態(tài)聯(lián)編是以虛函數(shù)為基礎(chǔ)的;
② 動態(tài)聯(lián)編是在運(yùn)行時確定所調(diào)用的函數(shù)代碼的;
③ 動態(tài)聯(lián)編調(diào)用函數(shù)操作是用指向?qū)ο蟮闹羔樆驅(qū)ο笠茫?
④ 動態(tài)聯(lián)編是在編譯時確定操作函數(shù)的;
41、下面是面向?qū)ο蟪绦蛟O(shè)計的特點,而______不是的。
① 多態(tài)性 ?、?封裝性
③ 隱藏性 ④ 繼承性
42、關(guān)于成員函數(shù)特征的下述描述中,_____是錯誤的。
① 成員函數(shù)一定是內(nèi)聯(lián)函數(shù) 30、;
② 成員函數(shù)可以重載;
③ 成員函數(shù)可以設(shè)置參數(shù)的缺省值;
④ 成員函數(shù)可以是靜態(tài)的。
43、關(guān)于delete運(yùn)算符的下列描述中,_____是錯的。
① 它必須用于new返回的指針;
② 它也適用于空指針;
③ 對一個指針可以使用多次該運(yùn)算符;
④ 指針名前只用一對方括號,不管所刪除數(shù)組的維數(shù)。
44、設(shè)置虛基類的目的是_____。
① 簡化程序; ② 消除二義性;
③ 提高運(yùn)行效率; ④ 減少目標(biāo)代碼;
45、下列運(yùn)算符中,_____運(yùn)算符在C++中不能重載。
① ?: ② + 31、 ③ new ④ <=
46、下列關(guān)于運(yùn)算符重載的描述中,_____是正確的。
① 運(yùn)算符重載可以改變運(yùn)算數(shù)的個數(shù);
② 運(yùn)算符重載可以改變優(yōu)先級;
③ 運(yùn)算符重載可以改變結(jié)合性;
④ 運(yùn)算符重載不可以改變語法結(jié)構(gòu);
47、如果一個類至少有一個純虛函數(shù),那么就稱該類為_____。
① 抽象類 ?、凇√摶?
③ 派生類 ④ 以上都不對
48、對基類和派生類的關(guān)系描述中,_____是錯誤的。
① 派生類是基類的具體化;
② 派生類是基類的子集;
③ 派生類是基類定義的延續(xù);
④ 派生類是基類的組合;
4 32、9、已知:print( )函數(shù)是一個類的常成員函數(shù),它無返回值,下列表示中,____是正確的。
① void print( ) const ② const void print( )
③ void const print( ) ④ void print(const)
50、派生類的對象對它的基類成員中,_____是可以訪問的。
① 公有繼承的公有成員; ?、?公有繼承的私有成員;
③ 公有繼承的保護(hù)成員; ④ 私有繼承的公有成員。
四、簡答題
1、 什么叫做靜態(tài)成員函數(shù)?它有何特點?
33、
2、在繼承體制中,試分析基類中某成員函數(shù)是虛函數(shù)與不是虛函數(shù)有何不同?
3、試解釋純虛函數(shù)與函數(shù)體為空的虛函數(shù)的相似及不同之處。
4、為什么說C++中的運(yùn)算符<<和>>是重載的運(yùn)算符?
5、什么是動態(tài)聯(lián)編?在什么情況下可以實現(xiàn)動態(tài)聯(lián)編?
6、拷貝初始化構(gòu)造函數(shù)是一特殊的成員函數(shù),在什么情況下系統(tǒng)會自動調(diào)用它?
7、多繼承下,可能造成對基類中某個成員訪問的不唯一性,稱為對基類成員訪問的二義性問題。試舉例說明,多繼承時,在什么情況下會產(chǎn)生二義性?
34、8、如果在類模板的定義中有一個靜態(tài)數(shù)據(jù)成員,則在程序運(yùn)行中會產(chǎn)生多少個相應(yīng)的靜態(tài)變量?
9、派生類的對象可以賦給基類對象,反過來行嗎?為什么?
10、構(gòu)造函數(shù)可以是虛函數(shù)嗎?試說明。
五、寫出下列程序的運(yùn)行結(jié)果
1、 #include "iostream.h"
class A
{ public:
A(int i=0)
{ m=i;
cout<<"Constructor called."< 35、t(int i) { m=i; }
void print( ) const
{ cout< 36、lled.
2、 #include "iostream.h"
class A
{ public:
A( )
{ a=0; b=0;
cout<<"Default constructor called."< 37、
~A( ) { cout<<"Destructor called."< 38、i].set(2*i+1,(i+1)*2);
a[i].print( );
}
}
Ans:
Default constructor called.
Default constructor called.
Default constructor called.
a=1 ,b=2
a=3 ,b=4
a=5 ,b=6
Destructor called.
Destructor called.
Destructor called.
3、 #include "iostream.h"
class B
{ public:
39、 B( ) { }
B(int i,int j)
{ a=i, b=j; }
void printb( );
private:
int a,b;
};
class A
{ public:
A( ) { }
A(int i, int j):c(i,j)
{ }
void printa( );
private:
B c;
} 40、;
void B::printb( )
{ cout<<"a="<
41、e:
int x, y;
};
int fun(A &a)
{ a.x=a.x*a.y;
return a.x;
}
void main( )
{ A ob1(4,7),ob2(5,9);
cout< 42、b=j; }
void move(int i, int j) { a+=i; b+=j; }
void disp( )
{ cout<<"("<
43、"< 44、lass A
{ public:
void seta(int x) { a=x; }
void showa( ) { cout<
45、blic B
{ public:
void setc(int x, int y, int z)
{ c=z;
seta(x);
setb(y);
}
void showc( )
{ showa( );
showb( );
cout< 46、 c.setc(1,2,3);
c.showc( );
}
Ans:1 2 3
7、 #include “iostream.h”
class J
{ public:
J(int i, int j)
{ a=i*j; 47、 display( ); }
virtual void display( )
{ cout<<”J::display( ) called.”<< a< 48、
class P1: public J
{ public:
P1(int i, int j): J(i, j)
{ p=i+j; display( ) ; }
void display( )
{ cout<<”P1::display( ) 49、called.”<
50、ed.b
P1::display( ) called.21
Press any key to continue
8、 #include “iostream.h”
class number
{ public:
number( ) { count++; }
~number( ) { count- -; }
static int HMS( ) { return count; }
private:
static 51、 int count;
};
int number::count=20;
void main( )
{ number a1, a2, a3,a4;
cout< 52、public :
A() { a=b=0; }
A(int aa,int bb) {
a=aa; b=bb;
cout <
class FOO{
public:
FOO(int i){
cout<<"Constructing.\n";
pointer=new int;
*pointer=i;
}
FOO(const FOO& othe 53、r){
cout<<"Copy Constructing.\n";
pointer=new int;
*pointer=*other.pointer;
}
~FOO(){
cout<<"Destructing\n";
delete pointer;
}
int get(){
return *pointer;
}
private:
int *pointer;
};
void display(FOO obj){
cout< 54、obj1(15);
FOO obj2=obj1;
display(obj2);
}
Constructing.
Copy Constructing.
Copy Constructing.
15
Destructing
Destructing
Destructing
11\
#include 55、turn B::n;}
};
void main()
{
D d;
d.B::n=10;
d.C::n=20;
cout< 56、
void A::print() { cout << "n=" << n << ", X=" << X<< endl; }
int A::n = 0;
void main()
{ A *p=new A(12);
p->print();
A a(34);
a.print();
delete p;
cout << "n=" << A::GetNum() << endl;
}
n=1, X=12
n=2, X=34
n=1
Press any key to continue
13、
#include 57、rivate:
int i;
static int count;
public:
Sample( );
void display( );
};
Sample::Sample( )
{
i=0;
count++;
}
void Sample::display( )
{
cout<<"i="<
58、
i=0,count=2
Press any key to continue
14\寫出下面程序的輸出結(jié)果。
#include 59、lay() const {
cout << "Base2::display()" << endl; }
class Derived: public Base2 {
public:
void display() const;
};
void Derived::display() const {
cout << "Derived::display()" << endl; }
void fun(Base1 *ptr) {
ptr->display(); }
void main() {
Base1 base1;
Base2 base2;
Deriv 60、ed derived;
fun(&base1);
fun(&base2);
fun(&derived);
}
運(yùn)行結(jié)果:
Base1::display()
Base2::display()
Derived::display()
15.用一句話概括下面程序的功能,并在”//”后加上注釋。
#include"iostream.h"
#include"fstream.h"
void main()
{
char ch;
ifstream myin("file_from");
if(!myin) // ①
61、 cout<<"cannot open file: file_from";
ofstream myout("file_to");
if(!myout)
cout<<"cannot open file: file_to";
while(myin.get(ch))
myout.put(ch); // ②
myin.close();
myout.close();
}
功能:______________________________________________________
功能是:將文件file_from的 62、內(nèi)容復(fù)制到文件file_to中。(3分)
注釋①: 判斷是否可以打開文件,myin=0為不可以,myin=1為可以。(1分)
注釋②:向文件讀、寫數(shù)據(jù)。(1分)
16\
class Base
{
public:
virtual void fn(int x)
{
cout<<"In Base class,int x="< 63、nt f="< 64、b):
In Base class,int x=5
Calling test(s):
In SubClass,int f=5
Press any key to continue六、簡答題
1什么叫函數(shù)重載?重載的函數(shù)要滿足什么條件?僅函數(shù)的返回值類型不同可以進(jìn)行函數(shù)重載嗎?
2簡述面向?qū)ο蠹夹g(shù)的四個基本特征。
3簡述面向?qū)ο蠹夹g(shù)支持的四種多態(tài)性。
4試解釋純虛函數(shù)與函數(shù)體為空的虛函數(shù)的相似及不同之處。
5.若派生類與其基類中有同名成員,試圖通過派生類對象訪問該同名成員時,可訪問到的是派生類中的還是基類中的成員?跟據(jù)上述理解,分析下面的類體系。 65、
Class A{ Public: int i; Void f(float); };
class B: public A{ public: int i; void f(int); };
則下面的訪問是否具有二義性(b為類B的一個對象)?
b.i;
b.f(3.5);
6 多繼承下,可能造成對基類中某個成員訪問的不唯一性,稱為對基類成員訪問的二義性問題。試舉例說明,多繼承時,在什么情況下會產(chǎn)生二義性?
7簡述賦值兼容規(guī)則。
8什么是動態(tài)聯(lián) 66、編?在什么情況下可以實現(xiàn)動態(tài)聯(lián)編?
9 三種派生類繼承方式有什么不同?各用在什么情況下?
10什么叫基類?什么叫派生類?基類中保護(hù)成員的訪問權(quán)限是什么?
11什么叫參數(shù)多態(tài)性?什么叫模板?模板方法是怎樣解決參數(shù)多態(tài)性問題的?
12 解釋函數(shù)模板和模板函數(shù)。
13 解釋類模板和模板類。其中,哪個可以用來定義對象?
14 解釋模板形參、模板實參和參數(shù)實例化。
15 什么叫流?什么叫流類?
數(shù)據(jù)從源對象到目的對象的傳送可以抽象看作為一個流。
流是抽象的概念,其職責(zé)是在數(shù)據(jù)的產(chǎn)生者和數(shù)據(jù)的使用者之間建立聯(lián)系,并負(fù)責(zé)管理數(shù)據(jù)的流動。
描述流的類稱為流類。
16 什么叫操作符?操作符有什么功能?怎樣使用操作符?
17寫出文件操作的基本步驟。
1)打開文件
2)對文件進(jìn)行操作
3)關(guān)閉文件
七、編程
1、 編寫重載函數(shù)max1可分別求取兩個整數(shù)、三個整數(shù)、兩個雙精度數(shù)、三個雙精度數(shù)的最大值(數(shù)值自定)。
2、 使用函數(shù)重載的方法定義兩個重名函數(shù),分別求出整數(shù)型的兩點間距離和浮點
- 溫馨提示:
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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《晏子使楚》優(yōu)秀課件 (3)
- 科室醫(yī)院年終總結(jié)課件
- 常用邏輯用語章末總結(jié)課件(人教A版選修1-1)免
- 新版PEP四年級英語上冊Unit3-My-Friends-B-Let’s-learn完美版-PPT
- 金融科技機(jī)遇
- 抗菌藥物合理使用專家講座
- 阿奇霉素在臨床中的應(yīng)用專家講座
- 納米抗菌蠶絲被介紹
- 男性盆部和會陰斷層解剖研究
- 部編選擇性必修二經(jīng)濟(jì)與社會生活-第九課世紀(jì)以來人類的經(jīng)濟(jì)與生活教學(xué)課件
- 春七年級數(shù)學(xué)下冊 82 整式乘法單項式與單項式相乘課件4 (新版)滬科版
- 部編人教版語文七年級下冊7.土地的誓言課件
- 手足口病
- 正壓通氣裝置課件
- 課件】食品分析與檢驗技術(shù)第二章