三、綜合應(yīng)用題
使用VC6打開考生文件夾下的工程kt17_3。此工程包含一個kt17_3.cpp,其中定義了類Letter和Number以及Grid,其中Grid類由Letter類和Number類public派生,但三個類的定義并不完整。請按要求完成下列操作,將程序補(bǔ)充完整。
(1)添加類Letter的帶一個參數(shù)c的構(gòu)造函數(shù),c是char型的數(shù)據(jù),默認(rèn)值為“A”,該函數(shù)把參數(shù)c的值賦給類的保護(hù)成員ch,請在注釋“//**1**”之后添加適當(dāng)?shù)恼Z句。
(2)添加類Number的帶一個參數(shù)n的構(gòu)造函數(shù),n是int型的數(shù)據(jù),默認(rèn)值為0,該函數(shù)把參數(shù)n的值賦給類的保護(hù)成員num,請在注釋“//**2**”之后添加適當(dāng)?shù)恼Z句。
(3)添加派生類Grid構(gòu)造函數(shù)的定義,傳入的參數(shù)為char型的c和int型的n,并將其分別賦值給基類的ch和num,請在注釋“//**3**”之后添加適當(dāng)?shù)恼Z句。
(4)完成派生類Grid的友元函數(shù)--"<<"運(yùn)算符重載的定義,使其以格式"[g.ch,g.num]"輸出,請在注釋“//**4**”之后添加適當(dāng)?shù)恼Z句。
源程序文件kt17_3.cpp清單如下:
#include
classLetter
{ protected:
charch;
public:
//**1** };
classNumber
{ protected:
intnum;
public:
//**2** };
classGrid:publicLetter,publicNumber
{ public:
//**3**
friendostream&operator<<(ostream&o,Grid&g); };
//**4**
{ o<<"["< returno; } intmain() { Gridg('C',3); cout<<"Gridreference:"< return0; } 【參考答案】 (1)Letter(char c = 'A') {ch = c;} (2)Number(int n = 0) {num = n;} (3)Grid(char c = 'A', int n = 0) : Letter(c), Number(n){} (4)ostream &operator<<(ostream &o,Grid &g) 【試題解析】 主要考查對類和派生類的構(gòu)造函數(shù)的定義,以及重載為友元的運(yùn)算符函數(shù)的定義的掌握,其中(3)使用了參數(shù)列表進(jìn)行變量賦值,這是派生類構(gòu)造函數(shù)中經(jīng)常使用的,(4)對于友元函數(shù)在類體外的定義不需要使用作用域符,而ostream類的對象引用可直接使用原來意義的符號“<<”進(jìn)行輸出。
2010下半年計算機(jī)等級考試保過模擬光盤熱銷中
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |