實驗三 建構函式與析構函式

2021-08-20 21:26:45 字數 3597 閱讀 1614

1.熟悉類的定義格式和類中成員的訪問許可權。

2.建構函式與析構函式的呼叫時機與順序。

3.掌握物件的定義以及物件的初始化的時機與方法。

1.下面程式sy3-1.cpp中用error標明的語句有錯,在不刪除和增加**行的情況下,改正錯誤語句,使其正確執行。

[cpp] 

view plain

copy

#include

using

namespace

std;  

class

aa  

;  int

main()  

錯誤的執行結果如下圖:

改正後的程式如下:

將」cout正確執行結果:

2.除錯下列程式:

[cpp] 

view plain

copy

#include

using

namespace

std;  

class

tpoint  

tpoint(tpoint &p);  

~tpoint()  

intgetx()  

intgety()  

private

:  int

x,y;  

};  

tpoint::tpoint(tpoint &p)  

intmain()  

在該程式中,將tpoint類的兩個帶有引數的建構函式進行修改,在函式體內增添下述語句:cout<

(1)寫出程式的輸出結果。

加入語句為:

輸出結果為:

(2)按下列要求進行除錯:

在主函式體新增下列說明語句;

除錯程式中會出現什麼現象?為什麼?如何解決?

除錯中出現的現象:

原因:沒有定義該型別的建構函式

解決辦法:將tpoint(int x,int y)改為tpoint(int x=0,int y=0) ; 即在執行過程中,tpoint p1(4,9)和tpoint p4,p5(2);呼叫了建構函式,而tpoint p2(p1)和tpoint p3=p2是使用了拷貝建構函式。   

最終執行結果:

3.對教材中li3_11.cpp的主函式做如下修改:

(1)將heapclass *pa1,*pa2 改為heapclass *pa1,*pa2,*pa3;

(2)在語句pa2=new heapclass 後增加語句pa3=new heapclass(5);

(3)將語句 if(!pa1||!pa2) 改為if(!pa1||!pa2||!pa3)

(4)在語句delete pa2 後增加語句delete pa3;

寫出程式的輸出結果,並解釋輸出結果。

依題意知 程式如下:

[cpp] 

view plain

copy

//sy3_3.cpp  

#include

using

namespace

std;    

class

heapclass    

;    

heapclass::heapclass(int

x)    

heapclass::heapclass()    

heapclass::~heapclass()    

intmain()    

cout<

<

delete

pa1;    

delete

pa2;    

delete

pa3;    

return

0;    

}   

執行結果如下:

結果解釋:首先使用指標指向新建立的物件,再利用建構函式輸出結果,最後呼叫析構函式實現再次輸出。

4、請定義乙個矩形類(rectangle),私有資料成員為矩形長度(len)和寬度(wid),無參建構函式置len和wid為0,有參建構函式置len和wid為對應形參的值,另外還包括求矩形的周長、求矩形的面積、取矩形的長度和寬度、修改矩形的長度和寬度為對應形參的值、輸出矩形尺寸等公有成員函式。要求輸出矩形尺寸的格式為「length:長度,width:寬度」。(sy3_4.cpp)

依題意程式如下:

執行結果:

1、類中私有成員的訪問許可權;

答:只有類中的函式才能訪問類中私有成員。

2、建構函式和析構函式的呼叫順序;

答:在物件建立時,先用建構函式對其進行初始化,在程式結束後用析構函式釋放由建構函式分配的記憶體,而且析構函式的執行順序與建構函式的執行順序剛好相反。

3、何時進行物件初始化?如何進行?

答:  一般物件:在物件的建立時對其進行初始化,可以用建構函式或者用拷貝建構函式進行初始化。

堆物件:用new進行分配空間,再呼叫建構函式進行初始化。

實驗三 建構函式與析構函式

1.熟悉類的定義格式和類中成員的訪問許可權。2.建構函式與析構函式的呼叫時機與順序。3.掌握物件的定義以及物件的初始化的時機與方法。1.下面程式sy3 1.cpp中用error標明的語句有錯,在不刪除和增加 行的情況下,改正錯誤語句,使其正確執行。include using namespace st...

實驗三 建構函式與析構函式

1.熟悉類的定義格式和類中成員的訪問許可權。2.建構函式與析構函式的呼叫時機與順序。3.掌握物件的定義以及物件的初始化的時機與方法。二 實驗內容 1.下面程式sy3 1.cpp中用error標明的語句有錯,在不刪除和增加 行的情況下,改正錯誤語句,使其正確執行。三 分析與討論 1 類中私有成員的訪問...

實驗三 建構函式與析構函式

1 熟悉類的定義格式和類中成員的訪問許可權。2 建構函式與析構函式的呼叫時機與順序。3 掌握物件的定義以及物件的初始化的時機與方法。實驗內容 1 下面程式sy3 1.cpp中用error標明的語句有錯吧,在不刪除和增加 行的情況下,改正錯誤語句,使其正確執行。執行程式如下 includeusing ...