有如下程序 #include using namespace std; class Base { protected:
有如下程序 #include <iostream> using namespace std; class Base { protected: Base( ){cout<<'A'; } Base(char c) { cout<<c; } }; class Derived: public Base { public: Derived(char c){ cout<<c; } }; int main( ){ Derived d1 ('B'); return 0; } 執(zhí)行這個(gè)程序屏幕上將顯示輸出
A.B
B.BA
C.AB
D.BB
正確答案:C解析:本題考查的是派生類(lèi)對(duì)象的構(gòu)造。建立派生類(lèi)對(duì)象時(shí),構(gòu)造函數(shù)的執(zhí)行順序如下: (1) 執(zhí)行基類(lèi)的構(gòu)造函數(shù),調(diào)用順序按照各個(gè)基類(lèi)被繼承時(shí)聲明的順序(自左向右): (2) 執(zhí)行成員對(duì)象的構(gòu)造函數(shù),調(diào)用順序按照各個(gè)成員對(duì)象在類(lèi)中聲明的順序(自上而下): (3) 執(zhí)行派生類(lèi)的構(gòu)造函數(shù)。 所以本題在建立派生類(lèi)Derived的對(duì)象d1時(shí)會(huì)先調(diào)用基類(lèi)Base的構(gòu)造,由于派生類(lèi)中沒(méi)有通過(guò)初始化列表顯式構(gòu)造基類(lèi)對(duì)象,所以調(diào)用的是基類(lèi)的默認(rèn)構(gòu)造函數(shù),會(huì)輸出一個(gè)'A'。然后調(diào)用自身的構(gòu)造函數(shù),輸出傳入的構(gòu)造參數(shù)'B
詞條內(nèi)容僅供參考,如果您需要解決具體問(wèn)題
(尤其在法律、醫(yī)學(xué)等領(lǐng)域),建議您咨詢相關(guān)領(lǐng)域?qū)I(yè)人士。