实验三


1、下面程序sy3_1.cpp中用ERROR标明的语句有错,在不删除和增加代码行的情况下,改正错误语句,使其正确运行
错误代码如下:
错误代码运行如下:
修改程序后运行如下



2,调试下列程序

(1)在该程序中,将TPoint类的带有两个参数的构造函数进行修改,在函数体内增加下述语句:
cout<<"Constructor is called.\n";
(1)写出程序的输出结果,并解释输出结果。

修改程序如下:



(2)按要求进行调试:在主函数内,添加下列说明语句:T Point  P4,P5(2)




但是会出现以现象


为什么会这样呢?
因为在类中没有定义不带参数和带一个参数的构造函数;
如何解决:将带两个参数的构造函数改为缺省的构造函数,就是可以将T Point(int x  ,int y)改为T Point(int x=0,int y=0) ; 在运行过程中,T Point p1(4,9)和T Point p4,p5(2);调用了构造函数,而T Point p2(p1)和T Point 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;
写出程序的输出结果,并解释输出结果。
原程序如下:


运行结果:



pa1、pa2、pa3中是2个指向类Heapclass的对象指针,在能够赋给它们足够内存的情况下,使用运算符new给它们赋值,同时对它们所指向的对象进行初始化。使用delete释放这三个指针所指向的对象,由于不能够赋给pa1、pa2或pa3足够内存,所以输出“Out of Memory”。

4.
4、请定义一个矩形类(Rectangle),私有数据成员为矩形的长度(len)和宽度(wid),无参构造函数置len和wid为0,有参构造函数置len和wid为对应形参的值,另外还包括求矩形周长、取矩形面积、取矩形长度和宽度、修改矩形长度和宽度为对应形参的值、输出矩形尺寸等公有成员函数。要求输出矩形尺寸的格式为“length:长度,width:宽度”。
程序如下:




分析与讨论
  1、类中私有成员的访问权限。
 答:私有成员是被隐藏的数据,只有该类的成员函数或友元函数才可以引用它。
 2、构造函数与析构函数的调用顺序。
  答:构造函数在创建对象的时候被调用,析构函数在释放对象的时候被调用,释放由构造函数分配的内存,构造函数与析构函数的调用顺序正好相反。
  3、何时进行对象初始化?如何进行?(提示:注意分一般对象和堆对象讨论)
 答:一般对象:在对象创建时进行初始化,可以用构造函数或拷贝函数进行初始化。
 堆对象:使用运算符new分配内存,调用构造函数来进行初始化。

在本实验中学会了构造函数和析构函数的运用,虽然还是有些不理解,做题过程中也出现很多错误,但还是解决了,要多卡书上的例子,以此类推的去完成。










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值