




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
選擇題
1.在C++中,函數原型不能襟識(D)
A.函數的返回類型B.函數參數的倜數C.函數參數類型D.函數的功能
2.在C++程序中,封象之間的互相通信通謾(B)
A.繼承實琨B.調用組員函數實現C.封裝實現D.函數重載實現
3.封于任意壹種類,析構函數的值1數最多卷(B)
A.0B.1C.2D.3
4.友元關系不能(A)
A.繼承B.是類與類的關系C.是壹種類的組員函數與另壹種類的關系D.提高程序的運行
效率
5.G吾句ofstreamf("SALARY.DAT",ios::appIios:句inary);的功能是建立流封象f,
試圖打^文獻SALARY.DAT并與之連接,并且(A)
A.若文獻存在,將文獻寫指針定位于文獻尾;若文獻不存在,建立壹種新文獻
B.若文獻存在,將其置卷空文獻;若文獻不存在,打^失敗
C.若文獻存在,將文獻寫指針定位于文獻首;若文獻不存在,建立壹種新文獻
D.若文獻存在,打^失敗;若文獻不存在,建立壹種新文獻
6.下面^法封的的是(B)
A.內聯函數在運行畤是將該函數的目的代碼插入每低I調用該函數的地方
B.內聯函數在編譯畤是將該函數的目的代碼插入每他I調用該函數的地方
C.類的內聯函數必須在類體內定義
D.類的內聯函數必須在類體外通謾加關鍵字inline定義
7.可以用p.a的形式訪冏派生類封象P的基類組員a,其中a是(D)
A.私有繼承的公有組員
B.公有繼承的私有組員
C.公有繼承的保護組員
D.公有繼承的公有組員
8.在公有派生狀況下,有關派生類卦象和基類封象的關系,不卦的的論述是(C)
A.派生類的封象可以賦Z合基類的射象
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.在派生類中重新定義虛函數畤必須在(A)方面與基類保持壹致。
A.參數類型B.參數名字C.操作內容D.賦值
15.下面有關C++中類的繼承與派生的法金昔誤的是(C)0
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.壹種類模板可以用來實例化多種模板類
D.類模板可以有多種參數
20.要使壹種類成卷抽象類,iSf固類應具有的條件是(A)
A.至少有壹種純虛函數
B.至少有壹種虛函數
C.只具有宜種純虛函數
D.只具有壹種虛函數
21.有關運算符重載封的的描述是(D)
A.C+若吾言容言午在重載運算符H與變化運算符的操作他|數
B.吾言容言午在重載運算符H寺變化運算符的優先級
C.言容言午在重載運算符畤變化運算符的結合性
D.C++言吾言容宗午在重載運算符畤變化運算符的本來的功能
22.下列^法封的的是(D)。
A.壹種類的封象可以是另壹種類的組員
B.壹種類可以作卷另壹種類的派生類
C.壹種類可以在另壹種類定義體迤行定義
D.以上^法均封的
23.下列各類函數中,(C)不是類的組員函數。
A.構造函數B.析構函數C.友元函數D.拷貝構造函數
24.派生類的封象封它的基類組員中(A)是可以訪冏的。
A.公有繼承的公有組員
B.公有繼承的私有組員
C.公有繼承的保護組員
D.私有繼承的公有組員
25.下面有關構造函數和new運算符關系封的的^法是(D)
A.new運算符不調用構造函數
B.構造函數壹定調用new運算符
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.公有繼承日寺基類中的protected組員在派生類中仍是protected的
D.私有繼承畤基類中的public組員在派生類中是private的
30.拷貝構造函數的參數是(C)
A.某他封象名B.某值I封象的組員名C.某10封象的引用名D.某值I封象的指針名
31.下列有關構造函數的描述中,籍誤的是(D)
A.構造函數可以設置默認參數
B.構造函數在定義類封象畤自勤執行
C.構造函數可以是內聯函數
D.構造函數不可以重載
32.數組作卷函數的形參畤,把數組名作卷實參,傳遞^函數的是(A)
A.該數組的首地址
B.該數組的元素低I數
C.該數組中的各元素值
D.該數組的大小
33.通謾壹種析構函數調用虛函數畤,C++系統封該調用采用(B)。
A.勤態聯編B.靜態聯編C.不確定是哪種聯編D.函數重載
34.下面有關重載函數的gft法中封的的是(C)
A.重載函數必須具有不壹樣的返回值類型;
B.重載函數形參他數必須;
C.重載函數必須有不堂樣的形參列表;
D.重載函數名可以不壹樣;
35.使用string類建立封象的不封的方式是(D)。
A.stringstr("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.闡明內聯函數的關鍵字是()o
A.inlineB.virtualC.defineD.static
41.假定CAb卷壹種類,則執行CAboX;IS句疇將自勤調用該類的()
A.有參構造函數B.輾參構造函數
C.拷貝構造函數D.賦值重載函數
42.cin是某他類的原則封象的引用,該類是()。
A.ostreamB.istreamC.stdoutD.stdin
43.下面的哪他保留字不能作卷函數的返回類型?()
A.voidB.intC.newD.long
44.不能參與重載的運算符是()o
A.類B.函數C.函數模板D.運算符
45.由于數據隱藏的需要,靜態數據組員壹般被闡明卷()。
A.私有的B.公有的C.保護的D.不可訪冏的
46.編譯畤多態性使用什么獲得?()
A.重載函數B.繼承C.虛函數D.B和C
47.拷貝構造函數的參數壹般是()o
A.輾特殊規定B.指向封象的指針
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)重載函數形參低I數必須不壹樣
0重載函數必須具有不壹樣的形參列表
D)重載函數名可以不壹樣
53.已知:print()函數是登種類的常組員函數,它瓢返回值,下列表達中,射的
的是(A)o
A)voidprint()const;B)constvoidprint();
C)voidconstprint();D)voidprint(const)
54.假定Myclass卷壹種類,那么下列的函數闡明中(D)卷該類的析構函數。
A)void~Myclass();B)~Myclass(in二n);
C)Myclass();D)?Myclass()
55.下面類的定義中有(C)處名昔誤。
classmyclass{inti=0;public:voidmyclass();
'myclass(value);)
A)1B)2C)3D)4
56.闡明虛函數的關鍵字是(B)o
A.inlineB.virtualC.defineD.static
57.cout是某他類的原則封象的引用,該類是(A)o
A.ostrcamB.istreamC.stdoutD.stdin
58、壹種類的所有卦象共享的是(D)。
A.私有數據組員B.公有數據組員
C.保護數據組員D.靜態數據組員
5g.靜態組員函數沒有(B
A.返回值B.Ihis指針C.指針參數D.返回I類型
60.有關C++與C言吾言關系的描述中,(D)是金昔誤的。
A.C^言是C+十言吾言的壹種子集
B.C^言與C++^言是兼容的
C.o+言吾言封C^言暹行了某些改善
D.C++言吾言和C言吾言都是面向量寸象的
61.按照楝識符的規定,(A)符號不能構成襟識符。
A.連接符B.下劃線
C.大小寫字母D.數字字符
62.卷了防止嵌套的if-else^句的二義性,(^吾言規定-S^^是與(C)構成配封關
系。
A.縮排位置相似的ifB.在其之前未配封的if
C.在其之前未配封的近來的ifD.同壹行上的if
63.在〃iniA[][3]-{{1},{3,2},{4,5,6},{0}};〃中,A[2][2]的值是(C)o
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是壹種指向數組的指針,所指向的數組是5fflint型元素
B.pa是壹種指向某數組中第5倜元素的指針,該元素是int型變量
C.pa[5]表達某低1元素的第5他元素的值
D.pa是壹種具有5他元素的指針數組,每f0元素是壹種int型指針
66.在下列表達引用的措施中,(A)是封的的。
已知:intm=10;
A.int&x=m;B.int&y=10;
C.int&z;D.floAt&t二
67.下列for循環的次數卷(B)o
for(i=0,x=0;!x&&i*5;i++)
A.5B.6C.1D.瓢限
68.封于C/C++言吾言的函數,下列論述中封的的是(A)o
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()的參數
D.變量A與A按位與作卷函數Set()的參數
73.已知:print()函數是壹種類的常組員函數,它輾返回值,下列表達中,(A)是
封的的。
A.voidprint()const;B.constvoidprint();
C.voidconstprint();D.voidprint(const);
74.有關虛函數的描述中,(C)是封的的。
A.虛函數是壹種static類型的組員函數
B.虛函數是壹種非組員函數
C.基類中闡明了虛函數彳菱,派生類中將其封應的函數可不必闡明卷虛函數
D.派生類的虛函數與基類的虛函數具有不壹樣的參數他數和類型
75.有關new運算符的下列描述中,(D)是金昔的。
A.它可以用來勤態創立封象和封象數組
B.使用它創立的封象和封象數組可以使用運算符Delete刪除
C.使用它創立封象畤要調用構造函數
D.使用它創立封象數組H寺必須指定初始值
76.若有定義inta=3,*p=&a;則*p的值是(B)
A)常量a的地址值B)3
C)變量p的地址值D)輾意義
77.在下列有關C++與言關系的各描述中,(D)是緒誤的。
A)C言吾言是C++的壹種子集;B)C言與C++是兼容的;
OC++封(:者吾言迤行了某些改善;D)C++和言都是面向封象的。
78.在下列有關類概念的各描述中,(A)是金昔誤的。
A)類就是C/吾言中的構造體類型;
B)類是具有共同行卷的若干封象的統壹描述體;
O類是創立卦象的樣板;
D)類是抽象數據類型的實現。
79.采用函數重載的目的在于(D)
A)實共享B)減少空間
0提高速度D)使用以便,提高可^性
80.下列的各類函數中,(C)不是類的組員函數。
A)構造函數B)析構函數
C)友元函數D)拷貝初始化構造函數
81.下列靜態數據組員特性中,(D)是拿昔誤的。
A)闡明靜態數據組員H寺前邊要加修飾符static;
B)靜態數據組員要在類體外暹行初始化;
0引用靜態數據組員畤,要在靜態數據組員名前加〈類名>和作用域辨別符;
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++支持的兩種多態性分別是編譯畤的(操作重載)(靜態)多態性和運行畤的(虛函
數)(勃態)多態性。
6.C++中^句constchar*constp-whellow;所定義的指針p和它所指的內容都不
能被(變化(重新賦值))。
7.假定AB^壹種類,則^句AB(AB&x);卷該類(拷貝)構造函數的原型闡明。
8.將關鍵字const寫在組員函數的(函數反直)和(函數體)之間畤,所修飾的是this指
針。
9.在C++中,訪冏壹種封象的組員所用的運算符是(?),訪冏壹種指針所指向的封象的
組員所用的運算符是(->)。
10.派生類優壹種或多種此前定義的該類的(基類)。
11.運算符重載畤,其函數名由(operator運算符)構成。組員函數重載雙目運算符
畤,左操作數是(目前封象),右操作數是(.函數形參r
12.C++支持面向封象程序設計的四他要素是:(封裝性)、(繼承性)、(抽象性)和(多態
性)。o
13.模板分卷(類)模板和(函數)模板。
14.定義內聯函數所用的關鍵字(inline),定義友元所用的關鍵字卷(friend)。
15.常壹種派生類具有多種基類畤,適種繼承方式稱卷(多重繼承)。
16.通謾壹種構造函數調用短函數畤,C++系統封該調用采用(靜態)聯編。
17.任何類中容言午有(private)、(public)、(protected)三種訪冏控制類型的組員,
數據組員和組員函數的默認類型^(private)o
18.只有在(公有)繼承的狀況下,基類和派生類之間才有賦值兼容性規則。
19.運算符重載使用的兩種方式是(組員函數)和(友元函數)。
20.組員名限定的符號是(::),它可以在引用組員畤防止(二義性)。
21.在用class定義壹種類畤,數據組員和組員函數的默認訪冏權限是(privated)。
22.已知intDBL(intn){returnn+n;}和longDBLdongn){returnn+n;}是壹種函
數模板的兩偃I實例,則該函數模板的定義是(lemplale<classT>TDBL(Tn){return
n+n;})。(規定寫出函數模板的完整定義)
23.靜態數據組員必須在(類外)迤行初始化。
24.具有純虛函數的類稱卷(抽象類)。
25.若Queue是壹種類,aQueue是它的壹種封象,并且該類中定義了壹種靜態組員函數
show()則在類外封該組員的函數暹行調用的方式可認卷(aQucue.showQ)和
(Queue::show())0
26.定義內聯函數所用的關鍵字卷(inline),定義友元所用的關鍵字卷(friend)。
27.使用組員函數重載運算符畤,若運算符是二元的,則參數表中有⑴值I操作數,此
畤(目前封象)作卷此運算符的左操作數。
28、C++程序中,封象的初始化和清理工作,分別由兩值1特殊的組員函數(構造函數)
和(析構函數)來完畢。
29、在C++中,分別用(變量)與(函數)來體現某種事物的所具有的屬性和行卷,并
且將它憑封裝在壹起,形成壹種抽象數據類型一一(類)。
30、莒用壹種卦象初始化另壹種新的同類封象,將調用(),其特殊之處在于:形參是
()o
31、模板是C++支持參數化的工具,我憑壹般用類模板和函數模板,適些只是面向封象
的()性的壹種方面。
32、假如在某他類定義中用關鍵字()申明了壹種外部函數(也^是其他類的壹種組員)
彳灸,造倜外部函數就可以例外的方冏該類的任何組員,造低I外部函數稱卷類的()函數。
33、可以將類的組員申明卷static,使其成卷()o逅樣的組員在編譯畤被創立,其實
例只有壹種,卷所有該類的封象()。
34、()是勤態勤態聯編的基礎。它是非靜態的組員函數,通謾()之彳爰,在類族中可
以實現運行遇程中的多態。
35、程序中有*如下言吾句:
inta=30;intb=a++;intc=++a;則b=(),c=()
數組A[20][20]中,第壹種元素是(),最終壹種元素是()
36、申明壹種int型指針,其勤態分派含10值I元素的地址空間:()o
37.在類中必須申明組員函數的(原型),組員函數的(實現)部分可以寫在類外。
38.假如需要在被調函數運行期間,變化主調函數中實參變量的值,則函數的形參應富
是(引用)類型或(指針)類型。
39.(抽象)類只能作卷基類使用,而不能申明它的封象。
40.迤行函數重載畤,被重載的同名函數假如都沒有用const修飾,則它伊號的形參(低I
數)或(類型)必須不壹樣。
41.通謾壹種(常)封象只能調用它的常組員函數,不能調用其他組員函數。
42.函數的遞歸調用是指函數直接或間接地調用(自身)。
43.拷貝構造函數的形參必須是(本類封象的引用)。
44.設函數max是由函數模板實現的,并且max(3.5,5)和max(3,5)都是封的的函數
調用,則此函數模板具有(2)彳固類型參數。
45.在C++中,函數重載與虛函數協助實現了類的(多態)性。
46.由static修飾的數據組員卷該類的所有封象(共享)。
47.重載函數在參數類型或參數值1數上不壹樣,但(函數名)相似。
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數或參數類型(不壹樣);
在基類和派生類中,組員函數的覆蓋是指(派生類組員函數與在基類被覆蓋的組員函數
名、參數他1數、參數類型和返回值類型均相似)。
65.構造函數與析構函數除功能不宜樣外,在定義形式_L,它年號的區別遢包括構造函
數名與類名相似,而析構函數名是在類名前加壹種~、(析構函數沒有參數)、(析構函數
可以定義卷虛函數)。
66.勤態聯編要滿足兩體I條件,它傷是(被調用的組員函數是虛函數)、(用指針或引
用■■調用虛函數)。
67.在C++類中,有壹種不能定義封象的類,道樣的類只能被繼承,稱之卷(抽象類),
定義該類至少具有壹種(純虛函數)。
68.在C++類中,const關鍵字可以修飾封象和組員函數,const封象不能(被修改),
const組員函數不能(修改類數據組員)。
69.C++中沒有字符串類型,字符串是通謾(字符數組〕來表達的,每壹種字符串均有
壹種結尾字符(\0)。
70.C++中沒有輸入輸出言吾句,輸入輸出是通謾(輸入輸出庫)實IS的,寫出壹條打
印整型變量n的輸出!§句:(cout?n;)0
71.舉出C++中兩種代碼復用的方式:(繼承)、(重載)。
判斷正誤題
(判斷正誤,在題彳爰的括號內,封的的劃上“金音誤的劃上"X"。)
I.不可以定義抽象類的封象。(V)
2.內聯函數的定義必須出目前第壹次調用內聯函數之前。(V)
3.模板函數與函數模板的意義完全相似。(X)
4.只有常組員函數才可以操作常封象。(J)
5.引用可以不初始化。(X)
6.構造函數可以設置默認參數
(V)
7.類的析構函數的作用是封象的初始化
(X)
8.cout的默認輸出封象是鍵盤,cin的默認輸入封象是屏幕
X)
9.抽象類可以用來直接創立封象。(X)
10.常封象可以調用任意組員函數。(X)
簡答題
1、虛析構函數有什么作用?
解答要黠:
封象銷毀畤,需要調用析構函數。在多態調用畤,是用基類的指針訪冏派生類的封
象。假如析構函數是非虛函數,則基類指針只能訪冏基類的析構函數,而不能訪冏派生
類的析構函數,導致派生類封象銷毀H寺,沒有調用派生類的析構函數,只是調用了基類
的析構函數。假如把析構函數定義成虛函數,則可克服造彳固冏題。
2、拷貝構造函數在哪幾種狀況下調用?
解答要黠:
用壹種封象初始化另壹種封象畤
常用射象作卷函數參數傳遞畤
'常函數返回封象畤
3、函數重載與函數覆蓋有什么不壹樣,它乃與多態有什么關系?
解答要鉆:
區數重載是指函數名相似,而函數的參數彳固數或類型不壹樣;覆蓋是指在派生類中
組員函數與基類組員函數的函數名、參數低I數、類型與返回值均相似;C++中正是通謾
虛函數的覆蓋,實現多態的功能。
4、C++繼承是怎樣工作的?
答:繼承使得派生類可以使用基類的公有和保護組員,優而實現代碼的復用,派生
類可以增艮組員,也可以隱藏和覆蓋基類的組員。封于公有繼承,基類組員的訪冏權限
在派生類保持不變。
5、類與封象有什么區別?
答:類是類型,是封象的抽象,封象是類的詳細實例。壹種類可以有多種封象,每
f0封象均有自己的存儲單元,而類不占存儲單元。
6.若程序員沒有定義拷貝構造函數,則編譯器自勤生成壹種缺省的拷貝構造函數,它
也^^產生什么冏題?
解答要黠:常封象具有指針數據組員,并用它初始化同類型的另壹種封象畤,缺省的拷
貝構造函數只能將該封象的數據組員復制,臺另壹種封象,而不能將該封象中指針所指向
的內存單元也復制謾去。it樣,就也言午出現同壹內存軍元釋放兩次,導致程序運行出金普。
7.簡述組員函數、全局函數和友元函數的差異。
解答耍黠:如下幾黠必須清晰:
組員函數是在類內部定義的,作用域在類的內部,組員函數可以訪冏類的數據組員
(公有、保護和私有數據組員),可以調用該類的其他組員函數(公有、保護和私有組
員函數),可以調用全局函數。假如友元函數是另壹種類的公有組員函數,則該類的組
員函數也只能通謾那俯I類的卦象調用,不能調用那他類的保護和私有組員函數。非本類
組員函數(其他類組員函數或全局函數)可以通謾該類的封象訪冏該類的公有數據組員
和調用該類的的公有組員函數。
不是在類中定義的組員函數都是全局函數。
假如某壹種函數(全局函數或類的組員函數)定義卷另壹種類的友元函數,需要在
那用類中用friend關鍵字申明,友元函數并不是類的組員,它的定義自然是在那他類
的外面。
8.簡述構造化的程序設計、面向封象的程序設計的基本思想。
解答要罷占:
構造化的程序設計將數據和封數據的操作分離,程序是由壹種體|的函數構成的,面向封
象的程序設計將數據和操作封裝在壹起,程序是由壹種他1封象構成的,封象之間通遇接
口謹行通信,它可以很好地支持程序代碼的復用。
9.構造struct和類class有什么異同?
解答要要占:
struct和class都可以定義類,不謾缺省訪冏權限闡明畤,struct的組員是公有的,
而class的組員是私有的。在C++中,struct可被class替代。
程序閱II分析題
1、分析程序,寫出程序的輸出成果(7分)。
nulude<iosli
usingnamespacestd;
classClock(
private:
iniHour,Minute,Second:
public:
voidSetTime(intNewll=24,intNewM=24,intNewS=24)
{Hour=Newll;Minule=NewM;Second=NewS:)
voidShowTimeO{cout?Hour?*:“<<Vinute<<":"<<Sccond〈〈endl;}
):
voidmain()
{cout?vtimesetandoutput:"?endl;
ClockM/Clock:
MyClockSetTimeO;
MyClock.ShowTimeO;
MyClockSelTime(8,30,30):
MyClockShowTimeO;
)
輸出成果:
timesetandoutput:
24:24:24
8:30:30
2、分析程序,寫出程序的輸出成果(7分)。
#include<iostream〉
usingnamespacestd;
classpoint(
private:
intx,y;
pubic:
point(intxx=0,intyy=O){x=xx;y=yy;coul<〈”構造函數被調用"<<endl;}
point(point&p);
intGetXO(returnx;}
intGetYO(returny;}
};
point::point(point&p)
{x=p.x;
y=p.y;
cou<U拷貝構造函數被調用"<<endl;
)
voidmain()
{po-ntA(4,5);
pointB(A);
coui?B.GetX0?endl;
}
輸dl成果:
構宜函數被調用
拷貝構造函數被調用
4
3.在括號中注釋封應的^句(8分)
#include<iostream>
usingnamespacestd:
〃有助態棧區的slack類
classstack{
intstacksize:
long+buffcr;
long+sp;
public:
stack(intsize)//(1)
{stacksize=size;
sp=buffer=newlong[size]:
}
"stack()//(2)
{deletebuffer;}//(3)
voidpushdong);
longpop();
};
voidstack::push(longdata)
{ifIsp>=buffer+stacksize)
coui?”overflcw!\n”;
else{*sp=data;
sp+-;
)}
longstack::pop()
{if(sp<=buffer)
(cout?*stackisempiy!\n”;return0;}
elsereturn(*-sp);
)
voidmain()
(stack*pa=newstack(lO);//(4)
pa->push(351);//(5)
pa->push(7075461);
cout?endl;
coul<<pa->pop()?wispopped.\n*;
deletepa;
)
(1)
(2)
(3)
(4)
(5)
4.^在如下兩題中任選壹題,該題得分即卷本小題得分。如兩題都答,則取兩題得分
之平均值卷本小題得分。
(1)程序:
力include<iostream>
^include<string>
usingnamespacestd;
classBase
{private:
charmsg[30];
protected:
inin;
public:
Base(chars[],intm=0):n(m)
{strcpy(msg,s):
}
voidoutput(void)
icout?n<<endl?msg<<endl;
)
};
classDerivedl:publicBase
I
private:
intn;
public:
Derivedl(intm=l):
Base("Base”,m-1)
{n=m;}
voidoutput(void)
{cout?n?endl;
Base::output0:
}
};
classDerived2:publicDerivedl
(
private:
intn;
pubic:
Derived2(intm=2):
Derivedl(m-1)
{n=m;}
voidoutput(void)
{cout?n?endl;
Derivedl::output():
}
};
intmainO
{
BaseB("BaseClass*,1);
Derived2D;
B.output0;
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=1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 數字治理與公共政策創新試題及答案
- 機電工程商業計劃書編寫試題及答案
- 評估2025年西方政治制度的效率與公平試題及答案
- 數據中心網絡的架構設計與試題及答案
- 2025年電子競技賽事贊助策略研究報告:品牌合作新路徑
- 西方政治制度的基本特征概述試題及答案
- 基層醫療衛生機構信息化建設中的醫療信息化產品技術發展趨勢報告
- 公共政策對性別平等的促進作用試題及答案
- 項目管理中的人力資源配置與優化策略試題及答案
- 工業互聯網平臺網絡隔離技術在2025年行業應用創新與產業發展報告
- 知識付費領域內容創業模式研究報告
- 化工廠光化車間停車檢修施工方案
- 鋁粉采購合同
- 廣州市主要河道采砂技術方案
- 中國基建課件教學課件
- EPC光伏項目投標方案(技術方案)
- 2023企業數字化轉型建設方案數據中臺、業務中臺、AI中臺
- 國家開放大學本科《人文英語3》一平臺機考真題及答案(第二套)
- 廣西壯族自治區南寧市2023-2024學年八年級下學期7月期末歷史試題(無答案)
- 江蘇省揚州市2023-2024學年高二下學期6月期末考試歷史試題
- 初中必背古詩文
評論
0/150
提交評論