实验三、构造函数与析构函数
一、实验目的和要求
1、熟悉类的定义格式和类中成员的访问权限;
2、构造函数与析构函数的调用时机与顺序。;
3、掌握对象的定义以及对象的初始化的时机与方法;
二、实验内容
1、下面程序sy3_1.cpp中用ERROR表明的语句有错,在不删除和增加代码行的情况下,改正错误语句,使其正确运行。
改正后程序:
可以正确运行:
2、调试下列程序。
在该程序中,将TPoint类的带有两个参数的构造函数进行修改,在函数体内增添下述语句:
cout<<"Constructor is called.\n";
(1)写出程序的输出结果,并解释输出结果。
(2)按下列要求进行调试:
在主函数体内,添加下列说明语句:
TPoint P4,P5(2);
调试程序会出现什么现象?为什么?如何解决?(提示:对已有的构造函数进行适当修改)结合运行结果分析如何使用不同的构造函数创建不同的对象。
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;
写出程序的输出结果,并解释输出结果。
运行结果图:
4、请定义一个矩形类(Rectangle),私有数据成员为矩形的长度(len)和宽带(wid),无参构造函数置len和wid为0,有参构造函数置len和wid为对应形参的值,另外还包括求矩形周长、求矩形面积、取矩形长度和宽度、修改矩形长度和宽度为对应形参的值、输出矩形尺寸等公有成员函数。要求输出矩形尺寸的格式为“length:长度,width:宽度”。(sy3_3.cpp)
运行结果图:
三、分析与讨论
1、类中私有成员的访问权限。
2、构造函数与析构函数的调用顺序。
3、何时进行对象初始化?如何进行?(提示:注意分一般对象与堆对象讨论)
四、实验小结
在本次的实验中,通过实验熟悉了类的定义格式和类中成员的访问权限,还知道了构造函数和析构函数的调用时机与顺序以及知道了对象的定义和对象的初始化的时机与方法。自我我感觉自己收获还是很大的,希望在以后的学习中可以学习更多的知识。