第 1 頁:試題 |
第 2 頁:參考答案 |
1.D。【解析】只有公有繼承的公有成員才能被派生類的對象直接訪問,其他的情況都會因為訪問權限問題產生錯誤。
2.C。【解析】本題考查考生對拷貝構造函數的掌握。因為++運算是右結合的,所以在使用a對b賦值時,b的hum變為1,而a的num變為2(先賦值再自加)。
3.D。【解析】本題考查cin流對象的幾種成員函數get,getline,read及流提取符>>的使用規則。
4.C。【解析】由主函數main入手,定義TestClass類的對象cs1,執行cs1.va1,其中va1為靜態變量,根據intTestClass::val=0;初始化,TestClass中的TestClass(){val++;}構造函數執行后,val值為1。主函數中接著定義對象cs2,cs3,cs4。執行cout< 25.B。【解析】本題考查構造函數的應用。對象建立用初始化列表對數據成員進行時。列表中的參數類型要與構造函數中形參類型一致。B選項中第二個參數為13301111155,是字符串,而構造函數中第二個形參為char型,兩者不一致造成錯誤。
6.D。【解析】聲明派生類的一般形成為class派生類名:[繼承方式]基類名。其中繼承方式包括public、private和protected。而virtual為C++中的關鍵字,所以選項C錯。虛函數的使用方法是在基類用virtual聲明成員函數為虛函數。
7.D。【解析】本題考查的是友元類的定義:類A為類B的友元類,則類A的所有成員函數都是類B的友元函數,但反之則不一定成立。
8.B。【解析】虛基類的引入就是為了消除二義性,其構造函數的調用仍然是按照繼承的順序進行的,對于多個虛基類則按它們說明的次序調用,虛基類的構造函數先于非虛基類的構造函數執行。
9.C。【解析】編譯時的多態性是通過函數重載和模板體現的,運行時的多態性是通過虛函數體現的。
10.D。【解析】首先定義TestClass3的對象obj,參數為10。其中TestClass3為TestClass1和TestClass2的派生類。然后調用disp成員函數。disp中首先執行TestClassl::disp();,然后執行TestClass2::disp();,最后執行輸出語句cout<
11.D。【解析】由主函數main入手,定義了類D對象obi。其中D為類B和C的公有繼承,A是C的虛基類。題目中要求的輸出結果為ABCD,依次為類A、類B、類C、類D中構造函數的輸出語句。為了保證基類通過多條路徑被派生類繼承,即保證A只被繼承一次,輸出一個A,所以不但需要聲明A為C的虛基類,同樣也要聲明A為B的虛基類。
12.B。【解析】所謂函數重載,是指同一個函數名可以對應著多個函數的實現,類AA中定義了兩個9et()函數,一個為普通成員函數,另一個為常成員函數。一般對象a既可以調用普通成員函數get,也可以調用常成員函數get,但是由于常成員函數不能更新對象的數據成員,所以題中通過對象a調用的函數為普通成員函數get(),返回值為5。常對象b只能調用常成員函數,所以題中通過對象b調用的函數為常成員函數get(),返回值為7。
13.C。【解析】函數Demo()為構造函數,而Demo(constDemo&x)為復制構造函數。C++在創建一個對象時,會自動調用類的構造函數,所以語句"Demoa,d;"將調用函數Demo()2次。當一個對象作為實參傳遞給函數時為初始化形參,要調用拷貝構造函數;在函數返回一個對象時調用拷貝構造函數。由此可知語句d=userCode(a);調用拷貝構造函數3次。
14.C。【解析】本題考查的是析構函數和對象的生存期。在主函數中,首先定義了一個DA類對象數組d,從初始化列表中可以看出,它包含三個對象;然后通過new運算符動態創建了一個DA類的對象數組,并將首地址賦給DA類指針P;接著通過delete[]運算符銷毀指針P所指向的數組,故此時會輸出11。最后函數結束,銷毀前面定義的對象數組d,會輸出333。故最后的輸出結果是11333。
15.D。【解析】在建立類對象時,構造函數的執行順序如下:執行基類的構造函數,調用順序按照各個基類被繼承的聲明順序;執行成員對象的構造函數,調用順序按照各個成員在類中的聲明順序;執行自身的構造函數。根據以上總結以及題意可知答案選擇D選項。
16.B。【解析】<返回類型>又稱函數類型,表示一個函數所計算(或運行)的結果值類型,這里的類型可以是預定義類型(如int)、復合類型(如double*)、用戶定義類型(如枚舉類),若返回值只做更新(或設置)等操作,則該函數返回類型為void類型,函數類型和內置數組不能作為返回類型,但類類型和容器類型可以被直接返回。
17.D。【解析】構造函數在對象被創建時由系統自動調用,本題共創建3個對象。
18.C。【解析】派生類從基類保護繼承classYY:pro-tectedXX時,基類的公有成員在派生類中變為保護成員,基類的保護成員在派生類中仍然是保護成員;本題中YY本身有一個保護成員y2,再加上基類XX的x2和x3,故選C。
19.A。【解析】運算符的重載是針對C++中原有運算符進行的,不能通過重載創造新的運算符。
20.D。【解析】類模板是一系列相關類的模板,類成員組成相同,成員函數的源代碼形式相同,所不同的是所針對的類型。類模板的成員函數都是模板函數,在用類模板定義對象時,由于沒有像函數實參表這樣的額外信息渠道,因此無法按函數模板的方式省略模板實參。但可以為類模板的參數設置默認值。由此可知應選D。
微信搜索"考試吧"了解更多考試資訊、下載備考資料
相關推薦: