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 ...