您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 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();”使之不会产生内存泄漏。解答:
本文标题:C++程序设计(第二版)钱能-第9章--对象生灭
链接地址:https://www.777doc.com/doc-4382386 .html