上機部分
一、改錯題
使用VC6打開考生文件夾下的工程kt8_1,此工程包含一個源程序文件kt8_1.cpp,但該程序運行有問題,請改正程序中的錯誤,使程序的輸出結果如下:
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)主要考查對虛函數(shù)的深刻理解,虛函數(shù)是動態(tài)聯(lián)編的基礎,也是實現(xiàn)多態(tài)性的重要方法,它可以根據(jù)不同的情況動態(tài)的選擇執(zhí)行哪一個函數(shù)。在派生類中實現(xiàn)虛函數(shù)應該滿足與基類的同名函數(shù)完全相同,并且使用關鍵字virtual修飾,本題中由輸出結果中的f1 function of derive可知,必須將基類base的成員函數(shù)f1()定義為虛函數(shù); (2)主要考查對派生類定義格式的掌握,應該使用“:”后面是繼承列表,而“::”是作用域符; (3)主要考查類對象的定義與使用,p是一個指針類型的變量,給它的賦值應該是一個地址,即使用取地址操作符&。 編輯推薦:
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內蒙古 |