有如下類定義: class MyBase { int k; public: MyBase(int n=0):k(n) { }
有如下類定義: class MyBase { int k; public: MyBase(int n=0):k(n) { } int value( )const{ return k;} }; class MyDerived: MyBase { intj; public: MyDerived(int i): j(i) {} int getK( )const{ return k; } int getJ( )const{ return j; } }; 編譯時發(fā)現(xiàn)有一處語法錯誤,對這個錯誤最準(zhǔn)確的描述是
A.函數(shù)getK試圖訪問基類的私有成員變量k
B.在類MyDerived的定義中,基類名MyBase前缺少關(guān)鍵字public、protected或private
C.類MyDerived缺少一個無參的構(gòu)造函數(shù)
D.類MyDerived的構(gòu)造函數(shù)沒有對基類數(shù)據(jù)成員k進行初始化
正確答案:A解析:本題考查的是派生類對基類成員的訪問。因為類中缺省的訪問權(quán)限是私有的 (private),所以本題MyBase類中定義的成員k為私有成員。而派生類中的成員只能夠訪問墓類中的公有成員和保護成員,不能訪問基類中的私有成員。所以,派生類中的函數(shù)getK()中的return k;語句是非法的。即函數(shù)getK()試圖訪問基類的私有成員變量k,故應(yīng)該選擇A。
詞條內(nèi)容僅供參考,如果您需要解決具體問題
(尤其在法律、醫(yī)學(xué)等領(lǐng)域),建議您咨詢相關(guān)領(lǐng)域?qū)I(yè)人士。