C++程序设计(第二版)钱能-第9章--对象生灭

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第9章对象生灭9.9练习9(Exercises9)1.写出下列程序的运行结果。//=====================================//e0901.cpp//=====================================#includeiostreamusingnamespacestd;//-------------------------------------classMyClass{intnumber;public:MyClass();~MyClass(int);~MyClass();voidDisplay();};MyClass::MyClass(){coutConstructingnormally.\n;}//-------------------------------------MyClass::MyClass(intm){coutConstructingwithanumber:numberendl;}//-------------------------------------voidMyClass::Display(){coutDisplayanumber:numberendl;}//-------------------------------------MyClass::~MyClass(){coutDestructing.\n;}//-------------------------------------intmain(){MyClassobj1;MyClassobj2(20);obj1.Display();obj2.Display();}//====================================解答:Constructingnormally.Constructingwithanumber:20Displayanumber:0Displayanumber:20Destructing.Destructing.2.写出下列程序的运行结果,请用增加拷贝函数的办法避免存在的问题。//=====================================//e0902.cpp//=====================================#includeiostreamusingnamespacestd;//-------------------------------------classVector{intsize;int*buffer;public:Vector(ints=100);int&elem(intndx);voiddusplay();voidset();~Vector();};//-----------------------------------Vector::Vector(ints){buffer=newint[size=s];for(inti=0;isize;i++)buffer[i]=i*i;}//------------------------------------int&Vector::elem(intndx){if(ndx0||ndx=size){couterrorinindexendl;exit(1);}returnbuffer[ndx];}//------------------------------------voidVector::display(){for(intj=0;jsize;j++)coutbuffer[j]endl;}//------------------------------------voidVector::set(){for(intj=0;jsize;j++)buffer[j]=j+1;}//------------------------------------Vector::~Vector(){delete[]buffer;}//-------------------------------------intmain(){Vectora(10);Vectorb(a);a.set();b.display();}//====================================解答:3.阅读下列程序,写出运行结果,添上一个拷贝构造函数来完善整个程序。//=====================================//e0903.cpp//=====================================#includeiostreamusingnamespacestd;//-------------------------------------classCAT{int*itsAge;public:CAT():itsAge(newint(5)){}~CAT(){deleteitsAge;}intGetAge()const{return*itsAge;}voidSetAge(intage){*itsAge=age;}};//-----------------------------------intmain(){CATfrisky;coutfrisky'sage:frisky.GetAge()endl;coutSettingfriskyto6...\n;frisky.SetAge(6);coutCreatingbootsfromfrisky\n;CATboots(frisky);coutfrisky'sage:frisky.GetAge()endl;coutboots'age:boots.GetAge()endl;coutsettingfriskyto7...\n;frisky.SetAge(7);coutfrisky'sage:frisky.GetAge()endl;coutboots'age:boots.GetAge()endl;}//=====================================解答:4.改写程序发5.cpp,使之含有构造函数,拷贝构造函数和析构函数。并对主函数和矩阵向量的乘法也进行改写。对于第91行和92行,合并成“multiply(ve,ma).display();”使之不会产生内存泄漏。解答:

1 / 4
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功