2024年C 試題庫含答案 (一)_第1頁
2024年C 試題庫含答案 (一)_第2頁
2024年C 試題庫含答案 (一)_第3頁
2024年C 試題庫含答案 (一)_第4頁
2024年C 試題庫含答案 (一)_第5頁
已閱讀5頁,還剩47頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

選擇題

1.在C++中,函數原型不能襟識(D)

A.函數的返回類型B.函數參數的保I數C.函數參數類型D.函數的功能

2.在C++程序中,封象之間的互相通信通謾(B)

A.繼承實琪B.調用組員函數實現C.封裝實垣D.函數重載實現

3.封于任意壹種類,析構函數的值I數最多卷(B)

A.0B.1C.2D.3

4.友元關系不能(A)

A.繼承B.是類與類的關系C.是壹種類的組員函數與另壹種類的關系D.提高程序

的運行效率

5.吉吾句ofstreamf("SALARY.DAT/Z,ios::appIios::binary)的功能是建立流

封象f,試圖打^文獻SALARY.DAT并與之連接,并且(A)

A.若文獻存在,將文獻寫指針定位于文獻尾;若文獻不存在,建立壹種新文獻

B.若文獻存在,將其置卷空文獻;若文獻不存在,打失敗

C.若文獻存在,將文獻寫韋針定位于文獻首;若文獻不存在,建立壹種新文獻

D.若文獻存在,打^失敗;若文獻不存在,建立壹種新文獻

6.下面^法封的的是(B)

A.內聯函數在運行畤是將該函數的目的代碼插入每佃調用該函數的地方

B.內聯函數在編譯畤是將該函數的目的代碼插入每低調用該函數的地方

C.類的內聯函數必須在類體內定義

D.類的內聯函數必須在類體外通謾加關鍵字inline定義

7.可以用p.a的形式訪冏派生類封象p的基類組員a,其中a是(D)

A.私有繼承的公有組員

B.公有繼承的私有組員

C.公有繼承的保護組員

D.公有繼承的公有組員

8.在公有派生狀況下,有關派生類射象和基類量寸象的關系,不卦的的論述是(C)

A.派生類的卦象可以賦給基類的封象

B.派生類的封象可以初始化基類的引用

C.派生類的封象可以直接訪尚基類中的組員

D.派生類的封象的地址可以賦^指向基類的指針

9.派生類封象可訪冏基類中的什么組員(A)

A.公有繼承的公有組員

B.公有繼承的私有組員

C.公有繼承的保護組員

D.私有繼承的公有組員

10.定義析構函數畤,應常注意(C)

A.其名與類名完全相似

B.返回類型是void類型

C.輾形參,也不可重載

D.函數體中必須有delete言四句

11.假如類A被闡明成類B的友元,則(D)。

A.類A的組員即類B的組員

B.類B的組員即類A的組員

C.類A的組員函數不得訪冏類B的組員

D.類B不壹定是類A的友元

12.面向封象程序設計將數據與(A)放在壹起,做懸壹種互相依存、不可分割

的整體來處理

A.封數據的操作B.信息C.數據隱藏D.數據抽象

13.在類中中明轉換函數畤不能指定(A)。

A.參數B.訪冏權限C.操作D.檄識符

14.在派生類中重新定義虛函數H寺必須在(A)方面與基類保持壹致。

A.參數類型R.參數名字C.操作內容D.賦值

15.下面有關C++中類的繼承與派生的法金音誤的是(C)。

A.基類的protected組員在公有派生類的組員函數中可以直接使用

B.基類的protected組員在私有派生類的組員函數中可以直接使用

C.公有派生畤,基類的所有組員訪冏權限在派生類中保持不變

D.基類的protected組員在保護派生類的組員函數中可以直接使用

16.重載賦值操作符畤,應申明卷(C)函數。

A.友元B.虛C.組員D.多態

17.在下面選項中,封類的拷貝構造函數的申明形式是(B)

A.A::A(&)B.A::A(constA&)C.A::A(A)D.voidA::A(A&a)

18.下面有關組員函數特性的描述中,金音誤的是(A)

A.組員函數不可以設置參數的默認值

B.組員函數可以重載

C.組員函數可以是內聯函數

D.組員函數可以是靜態的

19.下面有關類模板論述不封的的是(B)

A,可以有多種構造函數

B.類模板是模板類的實例

C.壹種類模板可以用來實例化多種模板類

0.類模板可以有多種參數

20.要使壹種類成卷抽象類,造彳固類應具有的條件是(A)

A.至少有壹種純虛函數

R.至少rr壹種虛函數

C.只具有壹種純虛函數

D.只具有壹種虛函數

21.有關運算符重載封的的描述是(D)

A.C++gg言容^在重載運算符畤變化運算符的操作值1數

B.C++BS言容宗午在重載運算符畤變化運算符的優先級

C.C++言吾言容^在重載運算符畤變化運算符的結合性

D.C++言吾言容^在重載運算符H與變化運算符的本來的功能

22.下列^法封的的是(D)。

A.堂種類的封象可以是另壹種類的組員

B.壹種類可以作卷另壹種類的派生類

C.壹種類可以在另壹種類定義體暹行定義

D.以上^法均封的

23.下列各類函數中,(C)不是類的組員函數。

A.構造函數B.析陶函數C.友元函數D.拷貝構造函數

24.派生類的封象封它的基類組員中(A)是可以訪冏的。

A.公有繼承的公有組員

B.公有繼承的私有組員

C.公有繼承的保護組員

D.私有繼承的公有組員

25.下面有關構造函數和new運算符關系封的的^法是(D)

A.new運算符不調用構造函數

B.構造函數壹定調用naw運算符

C.禽生成新類的實例畤,先調用new運算符,然彳及調用構造函數暹行初始化

D.常new運算符勤態產生類的封象疇,new運算符也自勤調用構造函數

26.下面有關類性質的意克法^誤的是(D)

A.壹種類可以有多種構造函數,但只有壹種析構函數

B.析構函數和構造函數都不能有返回類型

C.不能給析構函數指定參數

D.壹種類中不可以申明具有類類型的數據組員

27.下面有關友元函數描述封的的是(C)

A.友元函數是類的組員

B.友元函數在類的外部申明

C.友元函數在類中申明

D.友元函數可以派生

28.下面論述卦的的是(D)

A.派生類不可以使用私用派生B.保護派生畤,基類的保護組員在派生類

中是公有的

C.封基類組員的訪冏容器午二義性D.賦值兼容規則也合用于多重繼承的組

29.下面描述中,體瑰金昔誤的是(B)

A.公有繼承畤基類中的public組員在派生類中仍是public的

B.公有繼承是基類中的private組員在派生類中仍是private的

C.公有繼承H寺基類中的protected組員在派生類中仍是protected的

D.私有繼承疇基類中的pnblic組員在派生類中是privata的

30.拷貝構造函數的參數是(C)

A.某假I封象名B.某佰I封象的組員名C.某低I封象的引用名D.某(0封象的

指針名

31.下列有關構造函數的描述中,金昔誤的是(D)

A.構造函數可以設置默認參數

B.構造函數在定義類封象畤自勃執行

C.構造函數可以是內聯函數

D.構造函數不可以重載

32.數組作卷函數的形參畤,把數組名作卷實參,傳遞給函數的是(A)

A.該數組的首地址

B.該數組的元素f0數

C.該數組中的各元素值

D.該數組的大小

33.通謾壹種析構函數調用虛函數畤,C++系統封該調用采用(B)。

A.勤態聯編B.靜態聯編C.不確定是哪種聯編D.函數重載

34.下面有關重載函數的信兌法中封的的是(C)

A.重載函數必須具有不壹樣的返回值類型;

B.重載函數形參他數必須;

C.重載函數必須有不壹樣的形參列表;

D.重載函數名可以不壹樣:

35.使用string類建立封象的不封的方式是(D)o

A.string*tr("OK"):

B.stringstr二"OK”;

C.stringstr;

D.stringstr='OK';

36.有關C++中類的繼承與派生的法金音誤的是(C)

A.基類的protected組員在公有派生類的組員函數中可以直接使用

B.基類的protected組員在私有派生類的組員函數中可以直接使用

C.私有派生畤,基類的所有組員訪冏權限在派生類中保持不變

D.繼承可以分卷軍壹繼承與多重繼承

37.壹種類的析構函數(A)

A.唯壹的B.容^重載C.至多可有兩他D.只能是缺省的

38.下面有關靜態組員描述封的的是(B)

A.靜態組員是封象的數據組員

B.靜態組員是封象的組員

C.靜態組員是封象的組員國數

D.靜態組員不是封象的組員

39.下面論述封的的是(D)

A.基類的保護組員在派生類中仍然是保護的

B.基類的公有組員在派生類中仍然是公有的

C.基類的私有組員在派生類中是私有的

D.優基類派生畤,可以有3種派生措施

40.闡明內聯函數的關鍵字是()。

A.inlineR.virtualC.dpfinpD.static

41.假定CAb卷壹種類,則執行CAboX;言吾句畤將自勤調用該類的()

A.有參構造函數B.輾參構造函數

C.拷貝構造函數D.賦值重載函數

42.cin是某簡]類的原則封象的引用,該類是()o

A.ostreamB.istreamC.stdoutD.stdin

43.下面的哪他保留字不能作卷函數的返回類型?()

A.voidB.intC.nowD.long

44.不能參與重載的運算符是()。

A.類B.函數C.函數模板D.運算符

45.由于數據隱藏的需要,靜態數據組員壹般被闡明卷)o

A.私有的B.公有的C.保護的D.不可訪造I的

46.編譯畤多態性使用什么獲得?()

A.重載函數B.繼承C.虛函數D.B和C

47.拷貝構造函數的參數壹般是()。

A.瓢特殊規定B.指向婁f象的指針

C.自己類封象的常引用D.封象

48.C++有幾種聯編?()

A.1種B.2種C.3種D.4種

49.基類和派生類可以分別稱卷()o

A.“大類”和“小類”B.“父類”和“子類”

C.“小類”和“大類”D.“子類”和“父類”

50.下列封類的構造函數和析構函數描述封的的是(A

A)構造函數可以重載,析構函數不能重載

B)構造函數不能重載,析構函數可以重載

C)構造函數可以重載,析構函數可以重載

D)構造函數不能重載,析構函數不能重載

51.在函數定義前加上關鍵字“inline”,表達該函數被定義卷(B

A)重載函數B)內聯函數

C)組員函數D)壹般函數

52.下面有關重載函數的闡明中,(C)是封的的。

A)重載函數必須具有不壹樣的返回值類型

B)重載函數形參他數必須不壹樣

0重載函數必須具有不壹樣的形參列表

D)重載函數名可以不宜樣

53.已知:print()函數是壹種類的常組員函數,它瓢返回值,下列表達中,

封的的是(A)o

A)voidprint()cons:;B)constvoidprint();

C)voidconstprint();D)voidprint(const)

54.假定Myclass?^堂種類,那么下列的函數闡明中(D)卷該類的析

構函數。

A)void?Myclass();B)?Myclass(intn);

C)Myclass();D)?Myclass()

55.下面類的定義中有(C)處余昔誤。

classmyclass{inti=0;public:voidmyclass();

'myclass(value);}

A)1B)203D)4

56.闡明虛函數的關鍵字是(B)o

A.inlineB.virtualC.defineD.static

57.cout是某低I類的原則封象的引用,該類是(A)o

A.ostreamB.istreamC.stdoutD.stdin

58、壹種類的所有卦象共享的是(D)o

A.私有數據組員B.公有數據組員

C.保護數據組員D.靜態數據組員

59.靜態組員函數沒有(B)o

A.返回值B.this指針C.指針參數D.返回類型

60.有關C++與言關系的描述中,(D)是籍誤的。

A.C^言是C++^言的壹種子集

B.C言吾言與C++三吾言是兼容的

c.C++BM言封c^言暹行了某些改善

D.C+十言吾言和C言吾言都是面向封象的

61.按照檄識符的規定,(A)符號不能構成檄識符。

A.連接符B.下劃線

C.大小寫字母D.數字字符

62.懸了防止嵌套的if-else言吾句的二義性,C言吾言規定else余恩是與(C)構

成配封關系。

A.縮排位置相似的irR.在其之前未配封的if

C.在其之前未配封的近來的ifD.同壹行上的if

63.在〃intA[][3]={⑴,{3,2},{4,5,6},{0}};〃中,A[2][2]的值是(C)。

A.1B.0C.6D.2

64.設"Char**s;”,如下封的的體現式是(B)。

A.s="Computer”;B.*s=〃Computer”;

C.**s=〃Computer〃;D.*s='C;

65.封于〃int*pa[5];〃的描述中,(D)是封的的,

A.pa是壹種指向數組的指針,所指向的數組是5他Iint型元素

B.pa是直種指向某數組占第5倜元素的指針,該元素是int型變量

C.pa[5]表達某佰|元素的第5他元素的值

D.pa是壹種具有510元素的指針數組,每{0元素是壹種int型指針

66.在下列表達引用的措施中,(A)是卦的的。

已知:intm=10;

A.int&x二in;B.int&y=10;

C.int&z;D.floAt

67.下列for循環的次數^(B)o

for(i=0,x=0;!x&&i<=5;i++)

A.5B.6C.1D.輾限

68.封于C/C++gg言的函數,下列論述中封的的是(A).

A.函數的定義不能嵌套,但函數調用可以嵌套

B.函數的定義可以嵌套,但函數調用不能嵌套

C.函數的定義和調用都不能嵌套

D.函數的定義和調用都可以嵌套

69.在壹種被調用函數中,有關return言吾句使用的描述,(D)是籍誤的。

A.被調用函數中可以不用return^句

B.被調用函數中可以使用多種return言吾句

C.被調用函數中,假如有返回值,就堂定要有return^句

D.被調用函數中,壹種return^句可以返回多種值^調用函數

70.在壹種函數中,規定通謾函數來實垣壹種不太復雜的功能,并且規定加緊執

行速度,選用(A)。

A.內聯函數B.重載函數

C.遞歸調用D.嵌套調用

71.(D)不是構造函數的特性

A.構造函數的函數名與類名相似

B.構造函數可以重載

C.構造函數可以設置缺省參數

D.構造函數必須指定類型闡明

72.己知:類A中壹種組員函數闡明如下:

voiDSet(A&A);

其中,A&的含義是(C)。

A.指向類A的指針卷A

B.將A的地址值賦給變量Set

C.A是類A封象的引用,用來作函數Set()的參數

n.變量A與A按位與作卷函數Sei()的參數

73.已知:print。函數是壹種類的常組員函數,它輾返回值,下列表達中,(A)

是封的的。

A.voidprint()const;B.constvoidprint();

C.voidconstprint():D.voidprint(const);

74.有關虛函數的描述中,(C)是封的的。

A.虛函數是壹種static類型的組員函數

B.虛函數是壹種非組員函數

C.基類中闡明了虛函數彳爰,派生類中將其封應的函數可不必闡明卷虛函數

D.派生類的虛函數與基類的虛函數具有不宜樣的參數保|數和類型

75.有關new運算符的下列描述中,(D)是金昔的。

A.它可以用來勤態創立封象和封象數組

&使用它創立的封象和封象數組可以使用運算符Delete刪除

。.使用它創立封象的要調用構造函數

D.使用它創立封象數組畤必須指定初始值

76.若有定義inta=3,*p=&a;貝lj*p的值是(B)

A)常量a的地址值B)3

C)變量p的地址值D)輾意義

77.在下列有關C++與言關系的各描述中,(D)是金昔誤的。

A)C者吾言是C++的壹種子集;B)C^言與C++是兼容的;

C)C++封小吾言謹行了某些改善;D)C++和言都是面向封象的。

78.在下列有關類概念的各描述中,(A)是名昔誤的。

A)類就是CIS言中的構造體類型:

B)類是具有共同行卷的若干封象的統宣描述體;

C)類是創立卦象的樣板;

D)類是抽象數據類型的實垸。

79.采用函數重載的目的在于(D)

A)實現共享B)減少空間

C)提高速度D)使用以便,提高可^性

80.下列的各類函數中,(C)不是類的組員函數。

A)構造函數B)析構函數

C)友元函數D)拷貝初始化構造函數

81.下列靜態數據組員特性中,(D)是金昔誤的。

A)闡明靜態數據組員疇前邊要加修飾符static;

B)靜態數據組員要在類體外暹行初始化;

C)引用靜態數據組員時,要在靜態數據組員名前加〈類名〉和作用域辨別符;

D)靜態數據組員不是所有封象共有的。

82.如下各選項中,封的的函數申明是(C)

A)doublefunc(intx,inty)

B)intfunc(intx;inty);

C)floatfunc(intx,inty);

D)charfunc(intx,y);

填空題

1.定義類的勤態封象數組畤,系統只可以自勤調用該類的(輾參)構造函數封其選

行初始化。

2.在C++程序設計中,建立繼承關系倒掛的樹應使用俾壹)繼承。

3.體現式cout〈〈endl遢可表達卷(cout<<,\n')。

4.基類的公有組員在派生類中的訪冏權限由(訪冏控制)決定。

5.C++支持的兩種多態性分別是編譯畤的(操作重載)(靜態)多態性和運行H寺的

(虛函數)(勤態)多態性。

6.C++中言吾句constchar*constp="hello";所定義的指針p和它所指的內

容都不能被(變化(重新賦值))。

7.假定AB卷壹種類,則^句AB(AB&x);卷該類(捷貝)構造函數的原型闡明。

8.將關鍵字const寫在組員函數的(函數居0和(函數體)之間畤,所修飾的

是this指針。

9.在C++中,訪冏壹種封象的組員所用的運算符是(?),訪冏壹種指針所指向的

封象的組員所用的運算符是(->)。

10.派生類彳足壹種或多種此前定義的該類的(基類)。

11.運算符重載峙,其函數名由(operator運算符)構成。組員函數重載雙

目運算符畤,左操作數是(目前封象),右操作數是(函數形參)。

12.C++支持面向封象程序設計的四10要素是:(封裝性)、(繼承性)、(抽象性)

利(多態性)。O

13.模板分卷(類)模板和(函數)模板。

14.定義內聯函數所用的關鍵字(inline),定義友元所用的關鍵字卷(friend)。

15.常壹種派生類具有多種基類畤,造種繼承方式稱卷(多重繼承)。

16.通謾壹種構造函數調用虛函數畤,C++系統封該調用采用(靜態)聯編。

17.任何類中容言午有(private)、(public)、(protected)三種訪R3控制類型的

組員,數據組員和組員函數的默認類型卷(private)o

18.只有在(公有)繼承的狀況下,基類和派生類之間才有賦值兼容性規則。

19.運算符重載使用的兩種方式是(組員函數)和(友元函數)。

20.組員名限定的符號是(::),它可以在引用組員畤防止(二義性)。

21.在用class定義壹種類畤,數據組員和組員函數的默認訪冏權限是

(privated)。

22.已知intDBL(intn){returnn+n;}和longDBL(longn){returnn+n;}是

壹種函數模板的兩他I實例,則該函數模板的定義是(template〈classT>TDBL(T

n;{returnn+n;})。(規定寫出函數模板的完整定義)

23.靜態數據組員必須在(類外)謹行初始化。

24.具有純虛函數的類稱懸(抽象類)。

25.若Queue是壹種類,aQueuc是它的壹種封象,并且該類中定義了壹種靜態

組員函數show()則在類外封該組員的函數選行調用的方式可認卷

(aQueue.show())和(Queue::show())?

26.定義內聯函數所用的關鍵字卷(inline),定義友元所用的關鍵字卷

(friend)。

27.使用組員函數重載運算符畤,若運算符是二元的,則參數表中有(1)他操作

數,此畤(目前封象)作卷此運算符的左操作數。

28、C++程序中,劌象的初始化和清理工作,分別由兩他特殊的組員函數(構造

函數)和(析構函數)來完畢。

29、在C++中,分別用(變量)與(函數)來體垣某種事物的所具有的屬性和行

苒并且將它憑封裝在壹起,形成壹種抽象數據類型一一(類】

30、常用壹種封象初始化另壹種新的同類封象,將調用(),其特殊之處在于:

形參是()。

31、模板是C++支持參數化的工具,我出?壹般用類模板和函數模板,it些只是面

向卦象的()性的壹種方面。

32、假如在某倜類定義中用關鍵字()申明了壹種外部函數(也言午是其他類的壹

種組員)彳發,造他外部函數就可以例外的訪冏該類的任何組員,道低1外部函數稱

卷類的()函數。

33、可以將類的組員申明卷static,使其成卷()。迨樣的組員在編譯畤被創立,

其實例只有壹種,懸所有該類的封象()。

34、()是勤態勤態聯編的基礎。它是非靜態的組員函數,通謾()之彳及,在類

族中可以實現運行謾程中的多態。

35、程序中有如下言吾句:

inta=30;intb=a++;intc=++a;貝ijb=(),c=()

數組A[20][20]中,第壹種元素是(),最終壹種元素是()

36、申明壹種int型指針,清懸其勤態分派含10倜元素的地址空間:()。

37.在類中必須申明組員函數的(原型),組員函數的(實垣)部分可以寫在類

外。

38.假如需要在被調函數運行期間,變化主調函數中實參變量的值,則函數的形

參應常是(引用)類型或(指針)類型。

39.(抽象)類只能作懸基類使用,而不能申明它的封象。

40.暹行函數重載畤,被重載的同名函數假如都沒有用const修飾,則它優的形

參(他1數)或(類型)必須不壹樣。

41.通謾壹種(常)封象只能調用它的常組員函數,不能調用其他組員函數。

42.函數的遞歸調用是指函數直接或間接地調用(H身)。

43.拷貝構造函數的形參必須是(本類封象的引用)。

44.設函數max是由函數模板實現的,并且max(3.5,5)和max(3,5)都是封的

的函數調用,則此函數模板具有(2)倜類型參數。

45.在C++中,函數重載與虛函數協助實琪了類的(多態)性。

46.由static修飾的數據組員卷該類的所有封象(共享)。

47.重載函數在參數類型或參數值I數上不壹樣,但(函數名)相似。

48.使用new建立的勤態封象在不用疇必須用(delete)釋放所占用的空間。

49.重載運算符“一”的或數名卷(oprator-)。

50.C++中類的用途有兩種,壹種是類的實例化,即生成類的封象,另壹種是通

(繼承),派生出新的類。

51.編譯畤多態性可以用(重載)函數實現。

52.壹種C++程序的執行彳於(main)函數^始,到(main)函數系吉束。

53.在C++中,函數在定義畤可以預先定義出默認的形參值。默認形參值必須

按(優右到左)_的次序定義。由于在調用畤,實參初始化形參是按(優左到

右)的次序。

54.類是邏輯上有關的(函數)與(數據)的封裝。特殊類的封象擁有其壹般類

的所有屬性與服務,稱作特殊類封壹般類的(繼承)。

55.在C++中,函數的參數有兩種傳遞方式,它優是值傳遞和(地址或指針或引

用傳遞)。

56.常壹種組員函數被調用畤,該組員函數的(this指針)指向調用它的封象。

57.在基類和派生類中,派生類可以定義其基類中不具有的數據和操作。封兩佃

有相似名字的數據組員暹行訪冏畤,假如沒有(作用域分隔符限定期),封此數

據組員的訪冏將出現歧義。

58.拷貝構造函數使用(引用)作卷參數初始化創立中的封象。

59.在公有繼承的狀況下,基類數據組員在派生類中的訪冏權限(保持不變)。

60.用new申言青某壹種類的勤態封象數組畤,在該類中必須可以匹配到(沒有

形參的或缺省參數)構造函數,否則應用程序曾產生壹種編譯金昔誤。

61.靜態數據組員在類外暹行初始化,且靜態數據組員的支種拷貝被類的所有封

象(共享)。

62.卷了防止也言午出琨的歧義,C++封if…else言吾句配封規則規定卷:else

是與(與近來的if)配斐「

63.面向封象的程序設計有四大特性,它件?是抽象、封裝、(繼承)、(多態)。

64.在C++中,定義重載函數畤,應至少使重載函數的參數低I數或參數類型(不

宣樣);在基類和派生類中,組員函數的覆蓋是指(派生類組員函數與在基類被

覆蓋的組員函數名、參數(0數、參數類型和返回值類型均相似)。

65.構造函數與析構函數除功能不壹樣外,在定義形式上,它便1的區別遢包括

構造函數名與類名相似,而析構函數名是在類名前加壹種工(析構函數沒有參

數)、(析構函數可以定義卷虛函數)。

66.勤態聯編要滿足兩條件,它優是(被調用的組員函數是虛函數)、(用指

針或引用調用虛函數)。

67,在C++類中,有壹種不能定義卦象的類,追樣的類只能被繼承,稱之卷(抽

象類),定義該類至少具有壹種(純虛函數)。

68.在C++類中,const關鍵字可以修飾封象和組員函數,const封象不能(被

修改),const組員函數不能(修改類數據組員)。

69.C++中沒有字符串類型,字符串是通謾(字符數組)來表達的,每壹種字符

串均有登種結尾字符(\0)。

70.C++中沒有輸入輸出^句,輸入輸出是通謾(輸入輸出庫)實現的,寫出

壹條打印整型變量n的輸出^句:(cout?n;)。

71.舉出C++中兩種代碼復用的方式:(繼承)、(重裁)。

判斷正誤題

(判斷正誤,在題彳奏的括號內,封的的劃上金昔誤的劃上“X”。)

1.不可以定義抽象類的封象。

2.內聯函數的定義必須出目前第壹次調用內聯函數之前。

(V)

3.模板函數與函數模板的意義完全相似。

(X)

4.只有常組員函數才可以操作常封象。

(V)

5.引用可以不初始化。(X)

6.構造函數可以設置默認參數

(.J)

7.類的析構函數的作用是封象的初始化

(X)

8.cout的默認輸出卦象是鍵盤,cin的默認輸入封象是屏幕

(X)

9.抽象類可以用來直接創立封象。

(X)

10.常封象可以調用任意組員函數。

(X)

簡答題

1、虛析構函數有什么作用?

解答要鉆:

封象銷毀畤,需要調用析構函數。在多態調用畤,是用基類的指針訪冏派生

類的封象。假如析構函數是非虛函數,則基類指針只能訪冏基類的析構函數,而

不能訪冏派生類的析構函數,導致派生類封象銷毀峙,沒有調用派生類的析構函

數,只是調用了基類的析構函數。假如把析構函數定義成虛函數,則可克服迨倜

雕I。

2、拷貝構造函數在哪幾種狀況下調用?

解答要黠:

用壹種封象初始化另壹種封象畤

常用封象作^函數參數傳遞畤

堂函數返回封象畤

3、函數重載與函數覆蓋有什么不壹樣,它倬號與多態有什么關系?

解答要黠:

函數重載是指函數名相似,而函數的參數他數或類型不壹樣;覆蓋是指在派

生類中組員函數與基類組員函數的函數名、參數(0數、類型與返回值均相似:C++

中正是通謾虛函數的覆蓋,實現多態的功能。

4、C++繼承是怎樣工作的?

答:繼承使得派生類可以使用基類的公有和保護組員,彳他而實3M代碼的復用,

派生類可以增艮組員,也可以隱臧和覆蓋基類的組員。封于公有繼承,基類組員

的訪冏權限在派生類保持不變。

5、類與封象有什么區別?

答:類是類型,是封象的抽象,封象是類的詳細實例。壹種類可以有多種封

象,每彳固封象均有自己的存儲單元,而類不占存儲單元。

6.若程序員沒有定義搟貝構造函數,則編譯器自勤生成壹種缺省的拷貝構造函

數,它也^^產生什么冏題?

解答要黠:’常封象具有指針數據組員,并用它初始化同類型的另壹種封象畤,缺

省的拷貝構造函數只能將該封象的數據組員復制名臺另壹種封象,而不能將該劌象

中指針所指向的內存單元也復制謾去。it樣,就也^出琨同壹內存罩元釋放兩次,

導致程序運行出金第

7.簡述組員函數、全局函數和友元函數的差異。

解答要鉆:如下幾黠必須^清晰:

組員函數是在類內部定義的,作用域在類的內部,組員函數可以訪冏類的數

據組員(公有、保護和私有數據組員),可以調用該類的其他組員函數(公有、

保護和私有組員函數),可■以調用全局函數。假如友元函數是另壹種類的公有組

員函數,則該類的組員函數也只能通謾那倜類的封象調用,不能調用那你I類的保

護和私有組員函數。非本類組員函數(其他類組員函數或全局函數)可以通謾該

類的封象訪冏該類的公有數據組員和調用該類的的公有組員函數。

不是在類中定義的組員函數都是全局函數。

假如某壹種函數(全局函數或類的組員函數)定義卷另壹種類的友元函數,

需要在那倜類中用friend關鍵字申明,友元函數并不是類的組員,它的定義自

然是在那他類的外面。

8.簡述構造化的程序設計、面向封象的程序設計的基本思想。

解答要黠:

構造化的程序設計將數據和封數據的操作分離,程序是由壹種值I的函數構成的,

面向封象的程序設計將數據和操作封裝在壹起,程序是由壹種封象構成的,封

象之間通謾接口暹行通信,它可以很好地支持程序代碼的復用。

9.構造struct和類class有什么異同?

解答要黠:

struct和class都可以定義類,不謾缺省訪冏權限闡明畤,struct的組員是公

有的,而class的組員是私有的。在C++中,struct可被class替代。

程序閱分析題

1、分析程序,寫出程序的輸出成果(7分)。

ttinclude<iostream>

usingnamespacestd;

classClock{

private:

intHour,Minute,Second;

puolic:

voidSetTime(intNewH=24,intNewM=24,intNewS=24)

(Hour=NewH:Minute=NewM:Second=NewS:)

voidShowTimeO{cout?Hour?*:A,?Minute?w:/,?Second?endl;}

};

voidmainO

{cout?~timesetandoutput:w?endl;

ClockMyClock:

MyClock.SetTimeO:

MyClock.ShowTimeO;

MyClock.SetTime(8,30,30):

MyCluuk.SliuwTiuie0.

)

輸出成果:

timesetandoutput:

24:24:24

8:30:30

2、分析程序,寫出程序的輸出成果(7分)。

ttinclude<iostream>

usingnamespacestd;

classpoint{

private:

intx,y;

public:

point(intxx-0,intyy=O){x=xx;尸yy;cout<〈”構造函數被調用"<<endl;

point(point&p);

intGetX(){returnx:)

intGetY()(returny;}

):

point::point(point&p)

(x=p.x;

y=p-y;

coui?"拷貝構造函數被調用"Gendl

)

voidmain()

{pointA(4,5):

pointB(A):

cout?B.GetX0?endl:

1

輸出成果:

構造函數被調用

拷貝構造函數被調用

4

3.在括號中注釋封應的^句(8分)

★include<iostream>

usingnamespacestd;

//有勃態棧區的slack類

classstacki.

intstacksize;

long"buffer;

long*sp;

public:

stack(intsize)//(1)

{stacksize=sizc;

sp=buffer=newlongtsize];

)

'stack0//(2)

{deletebuffer:}//(3)

voidpush(long);

longpop():

);

voidstack::push(longdata)

{if(Gp>-buffci-+stackGizc)

cout?^ovcrflow!\n~;

else{*sp=data:

sp++;

longstack::pop()

{if(sp<=buffcr)

{cout?*stackisempty!\n";return0:}

elsereturn(*-sp);

}

voidmain()

(stack*pa=ncwstack(10);//(4)

pa->push(351);//(5)

pa->push(7075461);

cojt?endl;

cojl?pa->pop()?,xispopped.\n”;

deletepa;

)

(1)

(2)

(1)

(5)

4.^在如下兩題中任選壹題,該題得分即卷本小題得分。如兩題都答,則取而

題得分之平均值卷本小題得分。

(1)程序:

Hiiclude<iostream>

Uiiclude<string>

usingnamespacestd;

classBase

{private:

cliaiuibg[30],

protected:

intn;

puolic:

Base(chars[],intm=0):n(m)

{strcpy(msg,s);

}

voidoutput(void)

{cout?n<<endl?msg<<endl;

)

):

c1assDerived1:pub1icBase

(

private:

intn;

public:

Derived】(inim=l):

Base("Base”,m-1)

{n=m:}

voidoutput(void)

(cout?n?cndl;

Base::output0;

)

};

classDerived2:publicDerivedl

(

private:

intn:

public:

Derived2(intm=2):

Derivedl(m-1)

(n=m:)

voidoutput(void)

{cout?n?cndl;

Derived!::output0:

)

);

intmain()

(

BaseBCBaseClass”,1);

Derived2D;

B.output():

D.output0:

運行成果:

1

BaseClass

2

1

0

Base

(2)程序:

★include<iostream>

usingnamespacestd;

classSamp

{pub!ic:

voidSetij(inta,inib){i=a,j=b;}

?Samp()

{cout<<zDestroying..,z?i?end]:

)

intGetMuti(){returni*j;}

protected:

inti;

intj;

);

intmain()

(

Samp*p;

p=newSamp[5];

if(!p)

cout?z,Allocationerror\n*;

return1;

for(intj=0;j<5;j++)

p[j].Setij(j,j);

for(intk=0;k<5;k++)

cout?wMuti[,,?k?,/]is:"

?p[k].GetMuti()?endl;

delete[]p;

return0;

)

運行成果:

Muti[0]is:0

Muti[1]is:1

Muti[2]is:4

Muti[3]is:9

Muti[4]is:16

Destroying..4

Destroying..3

Destroying..2

Destroying..1

Destroying..0

5.比青在如下兩題中任選壹題,該題得分即卷本小題得分。如兩題都答,則

取兩題得分之平均值卷本小題得分。

(1)程序:

#include<iostrcam>

usingnamespacestd;

classVector

(

public:

Vector(ints=100);

int&Elem(intndx);

voidDisplay(void);

voidSet(void);

"Vector(void);

protected:

intsize;

int"buffer;

};

Vector::Vector(ints)

(

buffer=newint[size=s];

}

int&Vector::Elem(intndx)

(

if(ndx<0|ndx>=size)

(

cout?/zerrorinindexw?endl;

exit(1);

)

returnbuffer[ndx];

)

voidVector::Display(void)

(

for(intj=0;j<size;j++)

cout?Elem(j)?endl;

)

voidVector::Set(void)

(

for(intj=0;j<size;j++)

Elem(j)=j+1:

}

Vector::^Vector(void)

delete口buffer;

)

intmainO

(

Vectora(10);

Vectorb(a);

a.Set();

b.Display();

)

運行成果:

1

2

3

4

5

6

7

8

9

10

最終出拿音誤信息,原因是:申明封象b是謹行的是淺拷貝,b與a共用

同壹種buffer,程序結束前調用析構函數疇封同壹內存區暹行了兩次釋

放。

6.閱^下面程序,寫出輸出成果。

itinclude<iostream>

usingnamespacestd;

classCPosition

(

public:

CPosition(intiPosilionX=0,intiPositionY=0):m_iPosilionX(iPositionX)

(

m_iPositionY=iPositionY;

}

intGetPositionXOconst

{

returnm_iPositionX;

)

intGetPositionYOconst

returnm_iPositionY:

)

voidSetPositionX(intiPositionX)

{

m_iPositionX=iPositionX:

}

voidSetPositionY(intiPositionY)

miPositionY=iPositionY;

1

private:

intmiPositionX;//X坐襟

intm_iPositionY;//X坐楝

);

intmain(void)

I

CPositionoPostionl;

constCPositionoPostion216,8);

cout<<oPostionl.GetPositionX()<<endl;

oPostionl.SetPositionX(16^;

cout?oPostionl.GetPositionX()?endl;

oPostionl.SetPositionY(18';

cout?oPostionl.GetPositionY()?endl;

cout?oPostion2.GetPositionX()?endl;

cout?oPostion2.GetPositionY()?endl:

return0;

)輸出成果卷:

0

16

18

6

8

7.閱^下面程序,寫出輸出成果。

fiinclude<iostream>

usingnamespacestd;

template<classType>

classCTest

public:

CTest(TypemtArrayf],in:iSize):mpArray(mtArray)

{

m_iSize=iSize;

)

voidPrintOconst

|

for(inti=0;i<miSize;i++)

I

cout?m_pArray[i]?*:

)

}

private:

Type*mpArray;

intm_iSize:

);

intmain(void)

(

inta[]={1,0,8};

doubleb[]=(1.6,1.8};

CTest<int>oTestKa,3):

oTestl.Print():

CTest<double>oTcst2(b,szcof(b)/sizcof(double));

oTest2.PrintO:

cout?endl;

return0;

)

上面程序的輸出成果檢:

1081.61.8

8.閱^下面程序,寫出輸出成果。

8include<iostream>

usingnamespacestd;

classCGoods

I

public:

CGoods(intiWeight)

{

miWeight=iWeight;

m_iTotalWeight=m_i!otalWeight+iWeight;

)

CGoods(constCGoods&oGood)

{

miWeight=oGood.miWeight;

m_iTotalWeight=m_ilotaIWeight+m_iWeight;

1

'CGoods()

{

m_iTotalWeight=m_i!otalWeight-m_iWeight;

)

voidPrint0const:

staticintGetTotalWeightD

{

returnm_iTotalWeight;

1

private:

intm_iWeight;

staticintm_iTotalWeight

);

intCGoods;:iu_iTotalWeight=8;//初始化靜志數據組員

voidCGoods::Print()const

(

cout?this->m_iWeight?”"?this->m_iTotalWeight?

)

intmain(void)

(

CGoodsoGood1(6);

oGood1.Print();

CGoodsoGood2(oGood1):

oGood2.Print();

cout?CGoods::GetTotalWeight();

cout?endl:

return0:

)

上面程序的輸出成果卷:

61462020

9.閱^下面程序,寫出輸出成果。

ttinclude<iostream>

usingnamespacesld;

template<classType>

classCTest

public:

CTeslfTypetA=0,TypeIB=0,TypetC=0):m_tC(lC)

(

m_tA=tA:

m_tB=tB:

}

voidPrint0

{

cout?mtA?cndl;

cout?m_tB?endl;

)

voidPrint()const

{

cout?m_tC?endl;

}

private:

Typem_tA,m_tB:

constTypemtC:

);

intmain(void)

(

CTest<float>oTestl:

oTestl.Print();

CTest<int>oTest2(l,9,6:;

oTest2.Print0:

constCTest<double>oTest3(0,6,1.8):

oTest3.Print();

cout?endl:

return0;

)

上面程序的輸出成果懸:

0

0

1

9

1.8

10.程序分析題(本大題共5小題,每題4分,共20分)給出下面各程序

的輸出成果。

1.若有如下程序:

#include<iostream>

usingnamespacestd;

classA

(

inta;

public:

A(intaa=0){a=aa:)

){cout?^DestructorA!”<<a?endl;)

);

classB:publicA

(

intb;

public:

B(intaa=0,intbb=0)A(aa){b=bb:}

~B()(cout?""DestructorB!*?b?endl;)

);

intmain()

(

Bx(5),y(6,7):

return0:

)

上面程序的輸出成果卷:

DestructorB!7

DestructorA!6

DestructorB!0

DestructorA!5

2.若有如下程序:

升include<iostream>

usin*namespacestd:

classPoint

(

intx,y;

public:

Point0(x=0:y=0:}

voidSetPoint(intxl,intyl){x=xl;y=yl;}

voidDisPointO{cout?"x="?x"?"y="?y?endl;}

);

intmain()

I

Point*p=newPoint;

p->SetPoint(5,12);

p->DisPoint0;

deletep;

return0;

)

上面程序的輸出成果懸:

x=5,y=12

3.若有如下程序:

#include<iostream>

usingnamespacestd;

classBase

(

public:

voidFunO{cout<<"1"?endl;}

):

classDerived:pub1icBase

(

public:

voidFun(){cout?"2"?endl;}

);

intmain()

(

Deriveda;

Base*p;

P=&a:

p->Fun();

a.Fun();

return0;

)

上面程序的輸出成果懸:

1

2

4.閱^下面程序,寫出輸出成果。

^include<iostream>

usingnamespacestd;

classPoint

(

public:

Point(intx=0,inty=0):m_x(x),m_y(y){

溫馨提示

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

最新文檔

評論

0/150

提交評論