上機(jī)部分
一、改錯(cuò)題
使用VC6打開(kāi)考生文件夾下的工程kt7_1,此工程包含一個(gè)源程序文件kt7_1.cpp,但該程序運(yùn)行有問(wèn)題,請(qǐng)改正程序中的錯(cuò)誤,使程序的輸出結(jié)果如下:
Constructor1
Constructor1
Constructor1
Destructor
Constructor2
Destructor
x=0
x=5
Destructor
Destructor
源程序文件kt21_1.cpp清單如下:
#include
classB
{intx;
public:
B(){x=0;cout<<"Constructor1"< B(inti){x=i;cout<<"Constructor2"< ~B(){cout<<"Destructor"< /**********found**********/ ~B(inti){cout<
voidprint(){cout<<"x="< voidmain() {B*ptr; ptr=newB[2]; /**********found**********/ ptr[0]=B(0); ptr[1]=B(5); /**********found**********/ for(inti=0;i<2;) ptr[i].print(); delete[]ptr;} 【參考答案】 (1)將~B(int i){cout<
(2)將ptr[0]=B(0);改為:ptr[0]=B(); (3)將for (int i=0;i<2;)改為:for(int i=0;i<2;i++) 【試題解析】 (1)主要考查對(duì)析構(gòu)函數(shù)特性的掌握,析構(gòu)函數(shù)不能帶參數(shù)也不能重載,一個(gè)類中只能定義一個(gè)析構(gòu)函數(shù),因?yàn)槲鰳?gòu)函數(shù)在刪除對(duì)象的時(shí)候被默認(rèn)調(diào)用,如果含有多個(gè)析構(gòu)函數(shù)則可能引起多次刪除產(chǎn)生的意外錯(cuò)誤; (2)主要考查對(duì)構(gòu)造函數(shù)與函數(shù)重載的掌握,由輸出結(jié)果可知其應(yīng)該調(diào)用不帶參數(shù)的構(gòu)造函數(shù)B(); (3)主要考查對(duì)for循環(huán)語(yǔ)句的使用,如果在for循環(huán)中不寫第三個(gè)表達(dá)式就意味著該循環(huán)一直會(huì)執(zhí)行下去,因?yàn)閕的值總是小于2。 編輯推薦:
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |