繼承方法的實(shí)現(xiàn)如下:
#include
#include
#include
class filename:public ifstream{
char buf[100];
ostrstream Nane;
int nameset;
public:
filename(void):Name(buf,100),nameset(0){}
filename(const char*Filename):ifstream(Filename),Name(buf,100){
Name< <&NBSP;
nameset=1;
}
const char*name(void)const{
return buf;
}
void name(const char*newname){
if(nameset)return;
Name< <&NBSP;
nameset=1;
}
};
在沒(méi)有構(gòu)造函數(shù)時(shí)編譯器會(huì)自動(dòng)創(chuàng)建一個(gè)缺省構(gòu)造函數(shù),但如量有了構(gòu)造函數(shù)就不會(huì)自動(dòng)創(chuàng)建一個(gè)缺省構(gòu)造函數(shù)了。語(yǔ)句ttt ttt4(5)調(diào)用4次構(gòu)造函數(shù)(有參數(shù))創(chuàng)建4個(gè)數(shù)組對(duì)象,但第5個(gè)數(shù)組則要調(diào)用無(wú)參數(shù)構(gòu)造函數(shù),所以程序的錯(cuò)誤是結(jié)構(gòu)ttt中沒(méi)有定義無(wú)參數(shù)構(gòu)造函數(shù),可以在ttt結(jié)構(gòu)體內(nèi)加上如下語(yǔ)句:
ttt(){}
正確語(yǔ)句的4種填法為:
B.x+B.y+B.z;
PB->x+pB->y+pB->z;
(&B)->x+(&B)->y+(&B)->z;
(*pB).x+(*pB).y+(*pB).z;
(1)char*na,char*nu或char na[],char nu[]
(2)pn[k].name,pn[j].name
(3)obj[i].getdata(na[i],nu[i])
(4)*pt=obj
分析: (1)空位于類(lèi)成員函數(shù)getdata()的形參表中,根據(jù)其后的函數(shù)體內(nèi)容和數(shù)據(jù)成員的類(lèi)型,易知(1)處應(yīng)填char*na,char*nu或char na[],char nu[]。(2)空位于進(jìn)行排序的友元函數(shù)getsort(person pn[N]的比較語(yǔ)句中,根據(jù)函數(shù)的參數(shù)和意要求,可知此處是對(duì)對(duì)象數(shù)組pn[N]的name成員進(jìn)行比較,故填pn[k].name,pn[j].name。在主函數(shù)中,注意到定義了對(duì)象數(shù)組obj[N],但沒(méi)有被賦值,因此 (3)處要填obj[i].getdata(na[i],nu[i]),實(shí)現(xiàn)對(duì)各對(duì)象元素的賦值。空(4)處應(yīng)注意到下兩函數(shù)調(diào)用中的實(shí)參為pt,而pt又沒(méi)有被定義且應(yīng)為指向類(lèi)對(duì)象數(shù)組的指針,故此處填*pt=obj。
(1)x=p,x;y=p.y
(2)x= =p.get—x()&&y= =p.get—y()
(3)*this
分析: 這是一個(gè)含有比較運(yùn)算符和賦值運(yùn)算重載的程序。從程序可以看出,這兩種運(yùn)算符的重載很容易實(shí)現(xiàn),其中(1)處是point類(lèi)的拷貝構(gòu)造函數(shù)定義;(2)處是比較兩個(gè)點(diǎn)是否相等,故可知(2)處應(yīng)填x= =p.get—x()&&y= =p.get—y(),表示x值和y值都相等時(shí),返回1,否則返回0;(3)處是返回this指針的內(nèi)容。
(1)virtual
(2)*ptr
(3)ptr=&d
分析: 這是一個(gè)含有虛函數(shù)的程序。首先要注意的是虛函數(shù)必須在基類(lèi)中定義,因此(1)處應(yīng)填virtual;其次在用指針對(duì)基類(lèi)和派生類(lèi)對(duì)象操作時(shí),指針應(yīng)定義為基類(lèi)的指針,如果定義為派生類(lèi)的指針,則該指針只能指向派生類(lèi)的對(duì)象,而不能指向基類(lèi)對(duì)象,因此(2)處應(yīng)填*ptr,定義一個(gè)基類(lèi)指針;(3)處填入ptr=&d,是讓指針指向派生類(lèi)對(duì)象。
相關(guān)推薦:2010年計(jì)算機(jī)等級(jí)考試二級(jí)VB補(bǔ)充資料匯總北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |