一、改錯題
使用VC6打開考生文件夾下的工程kt14_1,此工程包含一個源程序文件kt14_1.cpp,但該程序運行有問題,請改正程序中的錯誤,使該程序的輸出結果為:
A:noparameters
B:intparameter
A:noparameters
B:intparameter
C:intparameter
源程序文件kt14_1.cpp清單如下:
#include
classA
{ /*****************found*****************/
private:
A(){cout<<"A:noparameters\n";}
A(inta){cout<<"A:intparameter\n";} };
classB:publicA
{ public:
B(inta){cout<<"B:intparameter\n";} };
/*****************found*****************/
classC:publicB,publicA
{ public:
/*****************found*****************/
C(inta)::B(a){cout<<"C:intparameter\n";} };
voidmain()
{ Bb(1);
Cc(2); }
【參考答案】
(1)將private:改為:public:
(2)將class C:public B,public A改為:class C:public B
(3)將C(int a)::B(a){cout<<"C: int parameter\n"; }
改為:C(int a):B(a){cout<<"C: int parameter\n";}
【試題解析】
(1)一個類的構造函數(shù)和析構函數(shù)可以由系統(tǒng)自動生成,也可以由用戶提供,但構造函數(shù)和析構函數(shù)都必須是該類的公有成員函數(shù),否則編譯時將出現(xiàn)錯誤,不能被調用;
(2)A已經(jīng)是B的基類,C公有繼承B,A也就成為了C的基類,根據(jù)程序的運行結果可知,C是要公有繼承B;
(3)派生類的構造函數(shù),初始化基類的參數(shù),調用基類的構造函數(shù)時,使用符號“:”,而不是“::”;
相關推薦:
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內蒙古 |