一、實驗目的和要求
1、熟悉類的定義格式和類中成員的訪問許可權。
2、建構函式與析構函式的呼叫時機與順序。
3、掌握物件的定義以及物件的初始化的時機與方法。
二、實驗內容
1、下面程式sy3_1.cpp中用error表明的語句有錯,在不刪除和增加**行的情況下,改正錯誤語句,使其正確執行。
[cpp]
view plain
copy
//sy3_1.cpp
#include
using
namespace
std;
class
aa
; int
main()
執行顯示錯誤:
修改:[cpp]
view plain
copy
#include
using
namespace
std;
class
aa
; int
main()
能夠正確執行:
2、除錯下列程式。
[cpp]
view plain
copy
//sy3_2.cpp
#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 p4,p5(2);
除錯結果錯誤:
因為在類中沒有定義不帶引數和帶乙個引數的建構函式,將tpoint(int x=0,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,*pa3改為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
#include
using
namespace
std;
class
heapclass
; heapclass::heapclass(int
x)
heapclass::heapclass()
heapclass::~heapclass()
intmain()
cout<
<
delete
pa1;
delete
pa2;
delete
pa3;
return
0;
} 輸出結果:
用3個指標*p1,*p2,*p3指向三個新建立的物件,並呼叫了帶乙個和不帶構造引數的建構函式對物件進行初始化,則輸出了前三個語句。實驗結束後,呼叫了析構函式,產生了後三個語句。
4、請定義乙個矩形類(rectangle),私有資料成員為矩形的長度(len)和寬頻(wid),無參建構函式置len和wid為0,有參建構函式置len和wid為對應形參的值,另外還包括求矩形周長、求矩形面積、取矩形長度和寬度、修改矩形長度和寬度為對應形參的值、輸出矩形尺寸等公有成員函式。要求輸出矩形尺寸的格式為「length:長度,width:寬度」。(sy3_3.cpp)
[cpp]
view plain
copy
//sy3_3.cpp
#include
using
namespace
std;
class
rectangle
rectangle(double
len,
double
wid)
double
circumference()
double
area()
double
getl()
double
getw()
void
charge(
double
a,double
b)
print();
intmain()
輸出結果:
三、分析與討論
1、類中私有成員的訪問許可權。
答:類中私有成員是被隱藏的資料,只有該類的成員函式或友元函式才可以引用它。
2、建構函式與析構函式的呼叫順序。
答:建構函式是一種特殊的成員函式,物件的建立和初始化工作可以由它來完成。析構函式的作用是在物件消失時執行一項清理任務,例如可以用來釋放由建構函式分配的記憶體等。
答:在宣告物件的時候進行的資料成員設定,稱為物件的初始化,初始化由建構函式來完成。
四、實驗小結
通過本次實驗,我感覺自己收穫還是很大的,通過實驗熟悉了類的定義格式和類中成員的訪問許可權,還知道了建構函式和析構函式的呼叫時機與順序以及知道了物件的定義和物件的初始化的時機與方法。
第三章 堆疊
1.基礎知識 堆疊可以實現很多的應用,遞迴的問題轉化成非遞迴形式,在本質上也是堆疊的問題.它是一種 filo 操作的資料結構,一般也有兩種儲存方式 陣列跟鍊錶實現形式,這裡我給出了鍊錶形式的堆疊模板,裡面包括了基本的堆疊所有的操作,還有兩個比較著名的應用例子,時間倉促,精力比較有限,關於迷宮老鼠還沒...
第三章 曙光
第三章 曙光 第二場校園招聘開始了。其實,洋對這個公司的不是很了解。因為前幾天突然在bbs上面看到了這個公司的招聘資訊,洋覺得這個公司不錯,就上網投了簡歷。接下來的乙個多小時,讓洋很震撼!想不到這個公司這個厲害,而且無論從哪方面來說,絕對不比之前的那個公司差。想不到自己的乙個不經意的決定到了這個大的...
第三章 遞迴
遞迴是一種強大的方法,它允許乙個物件以其自身更小的形式來定義自己。恐怕沒有什麼比觀察神秘的自然界中出現的遞迴現象更好的方法來體會遞迴的重要意義了。想想蕨類植物的葉子,每片葉子的小枝幹都是整片葉子的較小縮影 又或者兩個反光的物體,相互對映對方的漸遠的影像。這樣的例子使我們明白儘管大自然的力量是強大的,...