上機(jī)部分
一、改錯(cuò)題
使用VC6打開考生文件夾下的工程kt8_1,此工程包含一個(gè)源程序文件kt8_1.cpp,但該程序運(yùn)行有問(wèn)題,請(qǐng)改正程序中的錯(cuò)誤,使程序的輸出結(jié)果如下:
f1functionofderive
f2functionofbase
f4functionofbase
源程序文件kt8_1.cpp清單如下:
#include
classbase
{ public:
/**********found**********/
voidf1(){cout<<"f1functionofbase"< virtualvoidf2(){cout<<"f2functionofbase"< virtualvoidf3(){cout<<"f3functionofbase"< voidf4(){cout<<"f4functionofbase"< /**********found**********/ classderive::publicbase { voidf1(){cout<<"f1functionofderive"< voidf2(intx){cout<<"f2functionofderive"< voidf4(){cout<<"f4functionofderive"< voidmain() { base*p; deriveobj2; /**********found**********/ p=obj2; p->f1(); p->f2(); p->f4(); } 【參考答案】 (1)將void f1(){ cout<<"f1 function of base"< 改為:virtual void f1(){ cout<<"f1 function of base"< (2)將class derive::public base 改為:class derive:public base (3)將p=obj2; 改為:p=&obj2; 【試題解析】 (1)主要考查對(duì)虛函數(shù)的深刻理解,虛函數(shù)是動(dòng)態(tài)聯(lián)編的基礎(chǔ),也是實(shí)現(xiàn)多態(tài)性的重要方法,它可以根據(jù)不同的情況動(dòng)態(tài)的選擇執(zhí)行哪一個(gè)函數(shù)。在派生類中實(shí)現(xiàn)虛函數(shù)應(yīng)該滿足與基類的同名函數(shù)完全相同,并且使用關(guān)鍵字virtual修飾,本題中由輸出結(jié)果中的f1 function of derive可知,必須將基類base的成員函數(shù)f1()定義為虛函數(shù); (2)主要考查對(duì)派生類定義格式的掌握,應(yīng)該使用“:”后面是繼承列表,而“::”是作用域符; (3)主要考查類對(duì)象的定義與使用,p是一個(gè)指針類型的變量,給它的賦值應(yīng)該是一個(gè)地址,即使用取地址操作符&。 編輯推薦:
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |