使用VC++6.0打開考生文件夾下的源程序文件3.cpp。程序通過繼承關(guān)系,實(shí)現(xiàn)對(duì)姓名的控制。類TC1實(shí)現(xiàn)對(duì)
使用VC++6.0打開考生文件夾下的源程序文件3.cpp。程序通過繼承關(guān)系,實(shí)現(xiàn)對(duì)姓名的控制。類TC1實(shí)現(xiàn)對(duì)名字訪問的接口,TC2實(shí)現(xiàn)對(duì)名字的設(shè)置和輸出。
程序輸出為
TC2Name
May
其中定義的類并不完整,按要求完成下列操作,將類的定義補(bǔ)充完整。
(1)在類TCl中定義接口函數(shù)GetName為純虛函數(shù)。請(qǐng)?jiān)谧⑨?后添加適當(dāng)?shù)恼Z句。
(2)函數(shù)GetName2用于獲得名字的緩存,但只獲得允許讀操作這個(gè)緩存,請(qǐng)?jiān)谧⑨?后添加適當(dāng)?shù)恼Z句。
(3)實(shí)現(xiàn)TC2的構(gòu)造函數(shù),請(qǐng)?jiān)谧⑨?后添加適當(dāng)?shù)恼Z句。
(4)完成TC2的構(gòu)造函數(shù),實(shí)現(xiàn)對(duì)名字的處理。請(qǐng)?jiān)谧⑨?后添加適當(dāng)?shù)恼Z句。
注意:增加或者修改代碼的位置已經(jīng)用符號(hào)表示出來,請(qǐng)不要修改其他的程序代碼。
試題程序:
include<iostream.h>
classTC1
{
public:
//********1********
};
classTC2:publicTCl
{
public:
voidGetName
{
cout<<"TC2Name"<<endl;
}
//********2********
{
returnm_str;
}
//********3********
{
inti:
for(i=0;str[i]!=0;i++)
m_str[i]=str[i];
//********4********
}
private:
charm_str[32];
};
voidmain
{
TCl*P;
TC20bj1("May");
p=&objl;
p->GetName;
cout<<o(jì)bj1.GetNamc2<<endl;
return;
}
正確答案:(1)應(yīng)添加“virtualvoidGetNamt!=0;”。(2)應(yīng)添加“constchar*GetName2”。(3)應(yīng)添加“TC2(char*str)”。(4)應(yīng)添加“m_str[i]=0;”。【解析】本題第1處要求“在類TC1中定義接口函數(shù)GetName,為純虛函數(shù)”。在C++中,在基類中用virtual聲明成員函數(shù)為虛函數(shù)。純虛函數(shù)是在聲明虛函數(shù)時(shí)被“初始化”為0的函數(shù),即“virtualvoidGetName=0;”。第2處要求“函數(shù)GetName2實(shí)現(xiàn)獲得名字的緩存,但只獲得讀允許操作這個(gè)緩
詞條內(nèi)容僅供參考,如果您需要解決具體問題
(尤其在法律、醫(yī)學(xué)等領(lǐng)域),建議您咨詢相關(guān)領(lǐng)域?qū)I(yè)人士。