三、綜合應(yīng)用題
使用VC6打開(kāi)考生文件夾下的工程kt18_3。此工程包含一個(gè)kt18_3.cpp,其中定義了類(lèi)complex,但類(lèi)的定義并不完整。請(qǐng)按要求完成下列操作,將程序補(bǔ)充完整。
(1)添加類(lèi)complex的無(wú)參數(shù)的構(gòu)造函數(shù)的定義,將私有成員real和imag都初始化為0。請(qǐng)?jiān)谧⑨尅?/**1**”之后添加適當(dāng)?shù)恼Z(yǔ)句。
(2)添加類(lèi)complex的帶兩個(gè)參數(shù)的重載構(gòu)造函數(shù),兩個(gè)參數(shù)r和i都是double類(lèi)型,要求將r賦值給私有成員real,i賦值給私有成員imag,同時(shí)允許調(diào)用時(shí)參數(shù)i可是省略,請(qǐng)?jiān)谧⑨尅?/**2**”之后添加適當(dāng)?shù)恼Z(yǔ)句。
(3)完成類(lèi)complex重載加法函數(shù)的定義,該函數(shù)直接返回一個(gè)類(lèi)complex的對(duì)象,同時(shí)把參數(shù)對(duì)象c的實(shí)部real和虛部imag分別與當(dāng)前對(duì)象對(duì)應(yīng)部分分別相加,請(qǐng)?jiān)谧⑨尅?/**3**”之后添加適當(dāng)?shù)恼Z(yǔ)句。
(4)完成類(lèi)complex的友元函數(shù)print的定義,使其以格式"real+imagi"輸出,請(qǐng)?jiān)谧⑨尅?/**4**”之后添加適當(dāng)?shù)恼Z(yǔ)句。
源程序文件kt18_3.cpp清單如下:
#include
classcomplex
{ public:
//**1**
//**2**
{ real=r;imag=i; }
complexoperator+(complex&c);
friendvoidprint(complex&c);
private:
doublereal,imag; };
complexcomplex::operator+(complex&c)
{ //**3** }
//**4**
{ cout< voidmain() { complexc1(2.0,3.0),c2(4.0,-2.0),c3; c3=c1+c2; print(c3); c3=c3+complex(3.5); print(c3); } 【參考答案】 (1)complex( ) {real=imag=0; } (2)complex(double r, double i=0) (3)return complex(real+c.real,imag+c.imag); (4)void print(complex &c) 【試題解析】 主要考查類(lèi)的構(gòu)造函數(shù)重載、缺省參數(shù)的設(shè)置、運(yùn)算符的重載和友元函數(shù)的定義的掌握,其中(2)使用了參數(shù)賦初值的方式使得帶兩個(gè)參數(shù)的構(gòu)造函數(shù)可以省略后一個(gè)參數(shù),這是一種重要的方法,(3)直接返回類(lèi)的一個(gè)使用帶兩個(gè)參數(shù)的構(gòu)造函數(shù)生成的臨時(shí)對(duì)象,這是把運(yùn)算符重載為類(lèi)的成員函數(shù)時(shí)經(jīng)常使用的方式,(4)友元函數(shù)應(yīng)該在類(lèi)內(nèi)聲明,類(lèi)外定義,調(diào)用時(shí)和普通函數(shù)一樣,這一點(diǎn)要切記。
2010下半年計(jì)算機(jī)等級(jí)考試保過(guò)模擬光盤(pán)熱銷(xiāo)中
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |