第 1 頁:選擇題 |
第 2 頁:基本操作題 |
第 3 頁:簡單應用題 |
點擊查看:2018年9月計算機二級C++考試沖刺必做題及答案匯總
一、選擇題(每小題1分,共40分)
1 [單選題] 有如下程序:
運行后的輸出結(jié)果是( )。
A.3
B.5
C.6
D.編譯出錯
參考答案:C
參考解析:
題意中,add()函數(shù)接收3個double類型的參數(shù),最后一個形參e具有默認值1,函數(shù)將三個參數(shù)相加,返回相加的結(jié)果;main()函數(shù)中,調(diào)用add()函數(shù),傳人兩個參數(shù),所以形參c使用默認值1,對應參數(shù)的值為:2,3,1,函數(shù)將a、b、c轉(zhuǎn)換為double類型后,相加,并將結(jié)果6.0作為函數(shù)值返回,返回值轉(zhuǎn)換為int賦給result,最終輸出result的值。本題答案為C選項。
2 [單選題] 下列關(guān)于類定義的說法中,正確的是( )。
A.類定義中包括數(shù)據(jù)成員和函數(shù)成員的聲明
B.類成員的缺省訪問權(quán)限是保護的
C.數(shù)據(jù)成員必須被聲明為私有的
D.成員函數(shù)只能在類體外進行定義
參考答案:A
參考解析:
類的成員的缺省訪問權(quán)限是私有的,數(shù)據(jù)成員可以是私有,可以是公用的,也可以是受保護的。類的成員函數(shù)可以在類內(nèi)定義。
3 [單選題] 必須用一對大括號括起來的程序段是( )。
A.switch語句中的case標號語句
B.if語句的分支
C.循環(huán)語句的循環(huán)體
D.函數(shù)的函數(shù)體
參考答案:D
參考解析:
本題考查C++基本控制結(jié)構(gòu),A、B、C三個選項中的大括號不是必須的,而D選項中的函數(shù)體必須使用大括號。
4 [單選題] 計算數(shù)列第n項的函數(shù)定義如下:
若執(zhí)行函數(shù)調(diào)用表達式fa(4)時,返回的函數(shù)值為( )。
A.53
B.17
C.23
D.49
參考答案:A
參考解析:
題意中fa()函數(shù)是一個遞歸函數(shù),當參數(shù)n大于1時,函數(shù)返回值為3*fa(n-1)+2,當n等于1時,函數(shù)返回值為1,所以fa(4)=3*fa(3)+2=3*(3$fa(2)+2)+2=3*(3*(3*fa(1)+2)+2)+2=3*(3*(3+2)+2)+2=53。本題答案為A選項。
5 [單選題] 有如下程序:
運行時的輸出結(jié)果是( )。
A.Book:C++
B.Book:Unknown
C.Unknown:C++
D.Unknown:Unknown
參考答案:A
參考解析:
C++中,多態(tài)調(diào)用必須滿足兩個條件:被調(diào)用的成員函數(shù)是虛函數(shù);必須通過基類類型的引用或指針進行函數(shù)調(diào)用。 題意的main()函數(shù)中首先定義一個Book類對象,對象名為book,在構(gòu)造book對象時,程序過程如下:首先調(diào)用Book類的構(gòu)造函數(shù),傳人參數(shù)“C++”,在構(gòu)造函數(shù)執(zhí)行函數(shù)體前,再調(diào)用基類Publication的默認構(gòu)造函數(shù):傳入字符串“C++”,基類構(gòu)造函數(shù)在成員初始化列表中,使用傳人的參數(shù)“C++”為name賦值;此時繼承于基類的成員:name存放字符串“C++”。
然后main()函數(shù)調(diào)用showPublication()函數(shù),傳人book對象:showPublication()函數(shù)接收Publication類對象的引用p,然后調(diào)用p.getType()和p.getName()輸出。由于getType()成員函數(shù)屬于虛函數(shù),p屬于基類對象的引用,所以通過p調(diào)用getType()函數(shù)滿足多態(tài)調(diào)用,執(zhí)行p實際引用對象類型的getType(),即Book類的getType(),輸出:“Book”;而getName()不是成員函數(shù),所以不滿足多態(tài)調(diào)用,執(zhí)行基類的成員函數(shù)getName(),輸出name:“c++”。綜上,程序輸出:Book:C++。本題答案為A選項。
6 [單選題] 有如下程序:
執(zhí)行這個程序的輸出結(jié)果是( )。
A.375
B.357
C.0375
D.0357
參考答案:C
參考解析:
本題考查派生類的構(gòu)造函數(shù)和析構(gòu)函數(shù),在定義一個派生類的對象時,先調(diào)用基類的構(gòu)造函數(shù),然后再執(zhí)行派生類的構(gòu)造函數(shù),對象釋放時,先執(zhí)行派生類的析構(gòu)函數(shù),再執(zhí)行基類的析構(gòu)函數(shù)。本題中定義了一個對象d1,先執(zhí)行基類的構(gòu)造函數(shù)輸出0,再執(zhí)行派生類的構(gòu)造函數(shù)輸出3,然后定義了一個對象d2(5,7),其中需要調(diào)用基類的構(gòu)造函數(shù)輸出7,最后輸出5,所以答案為C。
7 [單選題] 軟件按功能可以分為應用軟件、系統(tǒng)軟件和支撐軟件(或工具軟件)。下面屬于應用軟件的是( )。
A.學生成績管理系統(tǒng)
B.C語言編譯程序
C.UNIX操作系統(tǒng)
D.數(shù)據(jù)庫管理系統(tǒng)
參考答案:A
參考解析:
軟件按功能可以分為:應用軟件、系統(tǒng)軟件、支撐軟件。操作系統(tǒng)、編譯程序、匯編程序、網(wǎng)絡軟件、數(shù)據(jù)庫管理系統(tǒng)都屬于系統(tǒng)軟件。所以B、C、D都是系統(tǒng)軟件,只有A是應用軟件。
8 [單選題] 下列程序的運行結(jié)果是( )。
A.00
B.23
C.34
D.25
參考答案:B
參考解析:
本題考查的是對構(gòu)造函數(shù)的掌握,另外“++”運算符是右結(jié)合的,所以在進行輸出的時候都是先把原來的輸出后再自加1。
9 [單選題] 關(guān)系數(shù)據(jù)模型的三個組成部分中不包括( )。
A.關(guān)系的完整性約束
B.關(guān)系的數(shù)據(jù)操縱
C.關(guān)系的數(shù)據(jù)結(jié)構(gòu)
D.關(guān)系的并發(fā)控制
參考答案:D
參考解析:
關(guān)系數(shù)據(jù)模型的三個組成部分:數(shù)據(jù)結(jié)構(gòu),操作集合(數(shù)據(jù)操縱),完整性約束。故本題答案為D選項。
10 [單選題] 關(guān)于函數(shù)重載,下列敘述中錯誤的是( )。
A.重載函數(shù)的函數(shù)名必須相同
B.重載函數(shù)必須在參數(shù)個數(shù)或類型上有所不同
C.重載函數(shù)的返回值類型必須相同
D.重載函數(shù)的函數(shù)體可以有所不同
參考答案:C
參考解析:
所謂函數(shù)重載是指同一個函數(shù)名可以對應多個函數(shù)的實現(xiàn)。每種實現(xiàn)對應一個函數(shù)體,這些函數(shù)的名字相同,其參數(shù)類型或個數(shù)不同,但不能出現(xiàn)函數(shù)返回值類型不同而參數(shù)類型和個數(shù)完全相同的重載。所以本題答案為C。
11 [單選題] 有如下程序:
運行后的輸出結(jié)果是( )。
A.2351
B.2531
C.5354
D.5534
參考答案:B
參考解析:
main()函數(shù)中調(diào)用了B的構(gòu)造函數(shù),參數(shù)為5,接下來B類對象b的構(gòu)造過程如下:①調(diào)用基類A的默認構(gòu)造函數(shù),構(gòu)造對象b的基類部分:初始化m_i為2。②按照B類中成員的定義順序,使用成員初始化列表初始化兩個A類成員:首先執(zhí)行m_a1(m_i+1),m_i為基類A中的成員,此時值為2,調(diào)用A類的默認構(gòu)造函數(shù),初始化m_a1.m_i為3;然后執(zhí)行m_a2(n),調(diào)用A類的默認構(gòu)造函數(shù),初始化m_a2.m_i為5。接著main()執(zhí)行return語句,此時對象b需要調(diào)用析構(gòu)函數(shù)進行釋放,釋放過程如下:①首先運行B類的析構(gòu)函數(shù)-B(),輸出m_i的值為2,然后將m_i自減1,使得m_i的值為1。②按照8類中成員定義順序的反順序,首先調(diào)用m_a2的析構(gòu)函數(shù)~A(),釋放對象m a2,輸出m_a2.m_i的值5;再調(diào)用m_a1的析構(gòu)函數(shù)~A(),釋放對象m_a1,輸出m_a1.m_i的值3。③最后調(diào)用基類A的析構(gòu)函數(shù)-A(),釋放b對象中的基類部分,輸出m_i的值1。 由上分析,程序運行結(jié)果為:2531。故本題答案為B選項。
12 [單選題] 有如下程序段:
上述程序使得derived對象中的動態(tài)內(nèi)存空間有可能不被釋放,有內(nèi)存泄漏風險,原因是( )。
A.base類是抽象類
B.derived類的析構(gòu)函數(shù)沒有釋放基類的動態(tài)內(nèi)存
C.base類的析構(gòu)函數(shù)不是虛函數(shù)
D.derived類的resoulce與公有繼承得到的resource同名
參考答案:C
參考解析:
基類base中的數(shù)據(jù)成員resource為整型指針變量,派生類derived中的數(shù)據(jù)成員resource與基類base中的同名,但類型為浮點型指針變量,基類base中構(gòu)造函數(shù)使用new為resource(整型指針)分配了內(nèi)存空間,在析構(gòu)函數(shù)中釋放;派生類derived的構(gòu)造函數(shù)在成員初始化類表中調(diào)用base的構(gòu)造函數(shù)構(gòu)造對象的基類部分,然后在構(gòu)造函數(shù)體內(nèi)使用new為resource(浮點型指針)分配了內(nèi)存空間,在析構(gòu)函數(shù)中釋放浮點型resource指針;由于基類base中的析構(gòu)函數(shù)未定義為虛函數(shù),所以派生類derived中的析構(gòu)函數(shù)在被調(diào)用時,不會再調(diào)用基類base中的析構(gòu)函數(shù),導致基類base中的整型指針變量resource無法釋放,造成內(nèi)存泄漏。故本題答案為C選項。
13 [單選題] 下列關(guān)于抽象類的敘述中,錯誤的是( )。
A.不能定義抽象類對象
B.抽象類中一定包含純虛函數(shù)
C.抽象類的派生類一定不是抽象類
D.抽象類的構(gòu)造函可以是protected函數(shù)
參考答案:C
參考解析:
含有一個或多個純虛函數(shù)的類是抽象類,不能創(chuàng)建抽象類的對象,選項A、B正確;由于無法創(chuàng)建(也不需要創(chuàng)建)抽象類的對象,所以抽象類的構(gòu)造函數(shù)可以是protected函數(shù),選項D正確;抽象類的派生類,如果也包含純虛函數(shù),那么該派生類也是抽象類,選項C錯誤。故本題答案為C選項。
14 [單選題] 一個工作人員可以使用多臺計算機,而一臺計算機可被多個人使用,則實體工作人員與實體計算機之間的聯(lián)系是( )。
A.一對一
B.一對多
C.多對多
D.多對一
參考答案:C
參考解析:
因為一個人可以操作多個計算機,而一臺計算機又可以被多個人使用,所以兩個實體之間是多對多的關(guān)系。
15 [單選題] 有如下程序:
執(zhí)行這個程序的輸出結(jié)果是( )。
A.1B
B.1D
C.2B
D.2D
參考答案:B
參考解析:
在某基類中聲明為virtual并在一個或多個派生類中被重新定義的成員函數(shù),本題中定義了一個指向派生類對象的基類指針ptr,執(zhí)行ptr->output后,會執(zhí)行基類的output函數(shù),輸出1,由于Print是虛函數(shù),所以ptr->Print()會執(zhí)行派生類的Print,即輸出D,所以本題答案為B。
16 [單選題] 層次型、網(wǎng)狀型和關(guān)系型數(shù)據(jù)庫劃分原則是( )。
A.記錄長度
B.文件的大小
C.聯(lián)系的復雜程度
D.數(shù)據(jù)之間的聯(lián)系方式
參考答案:D
參考解析:
層次模型的基本結(jié)構(gòu)是樹形結(jié)構(gòu),網(wǎng)狀模型是一個不加任何條件限制的無向圖,關(guān)系模型采用二維表來表示,所以三種數(shù)據(jù)庫的劃分原則是數(shù)據(jù)之間的聯(lián)系方式。
17 [單選題] C++中的模板包括( )。
A.對象模板和函數(shù)模板
B.對象模板和類模板
C.函數(shù)模板和類模板
D.變量模板和對象模板
參考答案:C
18 [單選題] 現(xiàn)有表示患者和醫(yī)療的關(guān)系如下:P(P#,Pn,Pg,By),其中P#為患者編號,Pn為患者姓名,Pg為性別,By為出生日期,Tr(P#,D#,Date,Rt),其中D#為醫(yī)生編號,Date為就診日期,Rt為診斷結(jié)果。檢索在1號醫(yī)生處就診的病人姓名的表達式是( )。
參考答案:A
參考解析:
π表示投影運算,針對屬性;σ表示選擇運算,針對元組;▷◁表示自然連接。首先在Tr表中選擇D#為1的記錄σD#=1(Tr),并檢索這些記錄中患者的編號πp#(σD#=1(Tr)),檢索結(jié)果與表P進行自然連接生成中間表計πP#(σD#=1(Tr))▷◁P,最后在中間表中檢索患者的姓名πPn(πP#(σD#=1(Tr))▷◁P)。故本題答案為A選項。
19 [單選題] 下列選項中不屬于結(jié)構(gòu)化程序設計原則的是( )。
A.可封裝
B.自頂向下
C.模塊化
D.逐步求精
參考答案:A
參考解析:
結(jié)構(gòu)化程序設計的思想包括:自頂向下、逐步求精、模塊化、限制使用goto語句,所以選擇A。
20 [單選題] 已知函數(shù)模板定義如下:
不能由該函數(shù)模板得到的函數(shù)實例是( )。
A.int min(int,int)
B.char min(char,char)
C.double min(int,double)
D.double min(double,double)
參考答案:C
參考解析:
題意中的模板函數(shù)min()接收兩個參數(shù),參數(shù)類型都是T,返回一個T類型的值,所以min()函數(shù)的參數(shù)、返回值都必須是同一類型,由此可知選項A、B、D可正確得到函數(shù)實例,選項C不可以。故本題答案為C選項。
21 [單選題] 某二叉樹共有7個結(jié)點,其中葉子結(jié)點只有1個,則該二叉樹的深度為(假設根結(jié)點在第1層)( )。
A.3
B.4
C.6
D.7
參考答案:D
參考解析:
根據(jù)二叉樹的基本性質(zhì)3:在任意一棵二叉樹中,度為0的葉子結(jié)點總比度為2的結(jié)點多一個,所以本題中度為2的結(jié)點為1-1=0個,所以可以知道本題目中的二叉樹的每一個結(jié)點都有一個分支,所以共7個結(jié)點共7層,即度為7。
22 [單選題] 如下函數(shù)模板:
templateT square(T x){return x*x;}
其中T是( )。
A.函數(shù)形參
B.函數(shù)實參
C.模板形參
D.模板實參
參考答案:C
參考解析:
本題考查模板函數(shù)的基本概念,根據(jù)模板函數(shù)的定義,T是模板形參,所以答案為C。
23 [單選題] 下列運算符中,可以重載為非成員函數(shù)的是( )。
A.=
B.>>.
C.[]
D.( )
參考答案:B
參考解析:
賦值操作符=、下標操作符[]和箭頭操作符->必須定義為類成員函數(shù),而輸入輸出操作符可以定義為非成員函數(shù)。故本題答案為B選項。
24 [單選題] 有如下程序:
運行后的輸出結(jié)果是( )。
A.5:4 20.52
B.5:4 20:52
C.5,4 20,52
D.5,4 20:52
參考答案:A
參考解析:
c++中,eonst對象只能使用eonst成員函數(shù),非eonst對象可以使用任一成員;題意中兩個print()函數(shù)屬于基于cons|的重載函數(shù),所以對于非eonst對象a,調(diào)用非eonst的成員函數(shù)print(),輸出:5:4;對于cons|對象b,輸出:20,52。故本題答案為A選項。
25 [單選題] 下列有關(guān)指針的操作中,正確的是( )。
A.int a=10;void*ptr=&a;cout<<*(ptr);
B.int * ptr=new int[10];delete ptr;
C.i.t Array[4];*(Array+3)=10;
D.int*ptr=new int*[10];
參考答案:C
參考解析:
變量a是整型,所以地址為整型指針,不能賦給void*類型,選項A錯誤;使用new分配數(shù)組空間時,必須使用delete[]來釋放數(shù)組空間,選項B錯誤;new int$[10]是分配了l0個整型指針數(shù)組,數(shù)組的每個元素都是整型指針,它無法賦給整型指針變量ptr,選項D錯誤。本題答案為C選項。
26 [單選題] 有如下程序:
執(zhí)行這個程序的輸出結(jié)果是( )。
A.CCCC
B.CCC
C.CC
D.C
參考答案:B
參考解析:
本題考查類的析構(gòu)函數(shù),題目中定義了類的一個對象a,對象指針*b,對象數(shù)組d[2],當程序執(zhí)行完后,析構(gòu)函數(shù)執(zhí)行了3次,輸出“CCC”,對象指針不會執(zhí)行析構(gòu)函數(shù)。所以本題答案為B。
27 [單選題] 下列符號中能夠作為C++標識符的是( )。
A.const
B.2a
C._shape
D.-count
參考答案:C
參考解析:
本題考查C++標識符的命名規(guī)則,其規(guī)則有如下幾點:①所有標識符必須由字母、數(shù)字或下畫線組成,且必須由字母或下畫線開頭;②所有標識符不能使用C++已有的關(guān)鍵字;③大、小寫字母表示不同意義,即代表不同的標識符。選項A是關(guān)鍵字,選項B不能以數(shù)字開頭,選項D包含了字符”-”,且不能以此字符開頭。故答案為C。
28 [單選題] 下列關(guān)于運算符函數(shù)的描述中,錯誤的是( )。
A.運算符函數(shù)的名稱總是以operator為前綴
B.運算符函數(shù)的參數(shù)可以是對象
C.運算符函數(shù)只能定義為類的成員函數(shù)
D.在表達式中使用重載的運算符相當于調(diào)用運算符重載函數(shù)
參考答案:C
參考解析:
運算符函數(shù)可以定義為類的友元函數(shù)。所以C選項錯誤。
29 [單選題] 如果派生類以protected方式繼承基類,則原基類的protected成員和public成員在派生類中的訪問屬性分別是( )。
A.public和public
B.public和protected
C.protected和public
D.protected和protected
參考答案:D
參考解析:
本題考查保護繼承中派生類對基類的訪問屬性,在受保護繼承中,基類的公用成員和保護成員在派生類中成了保護成員,其私有成員仍為基類私有,所以本題答案為D。
30 [單選題] 當一個派生類私有繼承一個基類時,基類中的所有公有成員和保護成員成為派生類的( )。
A.公有成員
B.私有成員
C.保護成員
D.友元
參考答案:B
參考解析:
C++中,對于公有繼承,基類成員保持自己的訪問級別:基類的public成員為派生類的public成員,基類的protected成員為派生類的proteeted成員,基類的private成員對派生類不可見,所以:在公有繼承中,基類中的公有成員對派生類對象可見,基類中的私有成員對派生類對象不可見;對于私有繼承,基類的public和protected成員在派生類中為private成員,基類的private成員對派生類不可見,選項B正確。本題答案為B選項。
31 [單選題] 有如下枚舉類型定義:
enum DAY{SUN,MON=10,TUE,WED,THU,F(xiàn)RI=20,SAT};
執(zhí)行下列程序段
輸出字符'a'的個數(shù)是( )。
A.13
B.16
C.19
D.22
參考答案:A
參考解析:
枚舉類型中,如果當前枚舉成員的值顯示初始化,那么后一個枚舉成員的值比當前枚舉成員的值大1,所以枚舉類型DAY中,SUN的值為0,NON的值顯示為10,TUE的值為11,WED的值為12,THU的值為13,F(xiàn)R1的值顯示初始化為20,SAT的值為21,所以for循環(huán)會執(zhí)行13次,輸出13個字符'a'。本題答案為A選項。
32 [單選題] 要建立文件流并打開當前目錄下的文件file.dat用于輸入,下列語句中錯誤的是( )。
A.ifstream fin=ifstream.open(”file.dat”);
B.ifstream*fin=new ifstream(”file.dat”);
C.ifstream fin;fin.open(”file.dat”);
D.ifstream*fin=new ifstream( );fin->open(”file.dat”);
參考答案:A
參考解析:
本題考查對文件流輸入的操作,可以調(diào)用文件流的成員函數(shù)pen,一般形式如下:文件流對象.open(磁盤文件名,輸入/輸出方式)。根據(jù)以上格式,可以判斷A選項錯誤。
33 [單選題] 下列有關(guān)繼承和派生的敘述中,正確的是( )。
A.派生類不能訪問基類的保護成員
B.作為虛基類的類不能被實例化
C.派生類應當向基類的構(gòu)造函數(shù)傳遞參數(shù)
D.虛函數(shù)必須在派生類中重新實現(xiàn)
參考答案:C
參考解析:
派生類可以訪問基類的保護成員,而不能訪問基類的私有成員。作為虛基類的類可以被實例化。虛函數(shù)如果沒有派生類中重新實現(xiàn),那么仍然使用基類的成員函數(shù)。
34 [單選題] 已知Value是一個類,value是Value的一個對象。下列以非成員函數(shù)形式重載的運算符函數(shù)原型中,正確的是( )。
A.Value operator+(Value v,int i);
B.Value operator+(Value v=value,int i);
C.Value operator+(Value v,int i=0);
D.Value operator+(Value v=value,int i=0);
參考答案:A
參考解析:
本題考查運算符重載,其中重載運算符的函數(shù)不能有默認的參數(shù),所以本題答案為A。
35 [單選題] 下列關(guān)于虛函數(shù)的說明中,正確的是( )。
A.從虛基類繼承的函數(shù)都是虛函數(shù)
B.虛函數(shù)不得是靜態(tài)成員函數(shù)
C.只能通過指針或引用調(diào)用虛函數(shù)
D.抽象類中的成員函數(shù)都是虛函數(shù)
參考答案:B
參考解析:
在某基類中聲明為virtual并在一個或多個派生類中被重新定義的成員函數(shù)。虛函數(shù)必須是基類的非靜態(tài)成員函數(shù),其訪問權(quán)限可以是protected或public。如果一個類包含了純虛函數(shù),稱此類為抽象類。所以本題答案為B。
36 [單選題] 有如下程序:
執(zhí)行這個程序的輸出結(jié)果是( )。
A.1111
B.1211
C.1112
D.1212
參考答案:C
參考解析:
本題主要考察虛函數(shù)。虛函數(shù)指在某基類中聲明為viltual并在一個或多個派生類中被重新定義的成員函數(shù),本題中定義類GA的對象a,執(zhí)行show(a)、display(a),輸出11,定義了類GB的對象b,執(zhí)行show(b),仍然輸出1,display(b)執(zhí)行會調(diào)用派生類的f函數(shù),因為f函數(shù)為虛函數(shù),輸出2,所以本題答案為C。
37 [單選題] 一個教師可講授多門課程,一門課程可由多個教師講授。則實體教師和課程間的聯(lián)系是( )。
A.1:1聯(lián)系
B.1:m聯(lián)系
C.m:1聯(lián)系
D.m:n聯(lián)系
參考答案:D
參考解析:
因為一個教師可講授多門課程,而一門課程又能由多個老師講授,所以他們之間是多對多的關(guān)系,可以表示為m:n。
38 [單選題] 下列關(guān)于類模板的模板參數(shù)的敘述中,錯誤的是( )。
A.模板參數(shù)可以作為數(shù)據(jù)成員的類型
B.模板參數(shù)可以作為成員函數(shù)的返回類型
C.模板參數(shù)可以作為成員函數(shù)的參數(shù)類型
D.模板參數(shù)不能作為成員函數(shù)的局部變量的類型
參考答案:D
參考解析:
本題考查類模板的概念和定義,模板參數(shù)可以作為成員函數(shù)的局部變量的類型。
39 [單選題] 下面對于友元函數(shù)描述正確的是( )。
A.友元函數(shù)的實現(xiàn)必須在類的內(nèi)部定義
B.友元函數(shù)是類的成員函數(shù)
C.友元函數(shù)破壞了類的封裝性和隱藏性
D.友元函數(shù)不能訪問類的私有成員
參考答案:C
參考解析:
友元函數(shù)的定義既可以在類內(nèi)部進行,也可以在類外部進行。它提高了程序的運行效率,但破壞了類的封裝性和隱藏性,使得類的非成員函數(shù)可以訪問類的私有成員。
40 [單選題] 有如下程序:
已知其執(zhí)行后的輸出結(jié)果為:
Base::fun
Derived::fun
則程序中下畫線處應填入的語句是( )。
A.Base.fun( );
B.Base::fun( );
C.Base->fun( );
D.fun( );
參考答案:B
參考解析:
本題考查公用繼承對基類成員的訪問屬性。在公用繼承中,基類的公用成員和保護成員在派生類中保持原有的訪問屬性,其私有成員仍為基類私有。本題中想要輸出Base::fun,則必須調(diào)用基類的公用成員函數(shù)fun,所以使用Base::fun();來調(diào)用基類的成員函數(shù)fun。
微信搜索"考試吧"了解更多考試資訊、下載備考資料
相關(guān)推薦:
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |