您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 企业财务 > C++类的习题-PPT
习题课2020/2/23北理珠海学院计算机学院2#includeiostream.h#includestdlib.hclassSample{public:intx,y;Sample(){x=y=0;}Sample(inta,intb){x=a;y=b;}voiddisp(){coutx=x,y=yendl;}};题1.分析以下程序执行的结果2020/2/23北理珠海学院计算机学院3•voidmain(){Samples1(2,3);s1.disp();}解:本题说明了重载构造函数的定义方法。首先定义了一个类Sample,在main()中定义了它的一个对象,定义s1对象时调用其重载构造函数(x=2,y=3),然后,调用其成员函数输出数据成员。所以输出为:x=2,y=3。2020/2/23北理珠海学院计算机学院4#includeiostream.hclassSample{intx,y;public:Sample(){x=y=0;}Sample(inta,intb){x=a;y=b;}~Sample(){if(x==y)coutx=yendl;elsecoutx!=yendl;}voiddisp(){coutx=x,y=yendl;}};题2.分析以下程序的执行结果2020/2/23北理珠海学院计算机学院5•voidmain(){Samples1(2,3);s1.disp();}解:本题说明了析构函数的定义方法。首先定义了一个类Sample,在main()中定义了它的一个对象,定义s1对象时调用其重载构造函数(x=2,y=3),然后,调用其成员函数输出数据成员,最后在退出程序时自动调用析构函数。所以输出为:x=2,y=3x!=y2020/2/23北理珠海学院计算机学院6题4分析以下程序的执行结果•#includeiostream.hclassSample{intx,y;public:Sample(){x=y=0;}Sample(inta,intb){x=a;y=b;}voiddisp(){coutx=x,y=yendl;}};voidmain(){Samples(2,3),*p=&s;p-disp();}解:本题说明了对象指针的使用方法。这里通过指向对象的指针来调用对象的成员函数。对象指针p指向对象s,p-disp()等价于s.disp()。所以输出为:x=2,y=3.2020/2/23北理珠海学院计算机学院7题5分析以下程序的执行结果#includeiostream.hclassSample{public:intx;inty;voiddisp(){coutx=x,y=yendl;}};voidmain(){intSample::*pc;Samples;pc=&Sample::x;s.*pc=10;pc=&Sample::y;s.*pc=20;s.disp();}2020/2/23北理珠海学院计算机学院8解:本题说明了类数据成员指针的使用方法。在main()中定义的pc是一个指向Sample类数据成员的指针。执行pc=&Sample::x时,pc指向数据成员x,语句s.*pc=10等价于s.x=10(为了保证该语句正确执行,Sample类中的x必须是公共成员);执行pc=&Sample::y时,pc指向数据成员y,语句s.*pc=20等价于s.y=20(同样,Sample类中的y必须是公共成员)。所以输出为:x=10,y=20。2020/2/23北理珠海学院计算机学院9题6下面是一个类的测试程序,设计出能使用如下测试程序的类。voidmain(){Testa;a.init(68,55);a.print();}其执行结果为:测试结果:68-55=132020/2/23北理珠海学院计算机学院10#includeiostream.hclassTest{intx,y;public:voidinit(int,int);voidprint();};voidTest::init(inti,intj){x=i;y=j;}voidTest::print(){cout“测试结果:”x“-y=“x-yendl;}2020/2/23北理珠海学院计算机学院11题7.分析以下程序的执行结果#includeiostream.hclassSample{public:Sample();Sample(int);~Sample();voiddisplay();protected:intx;};Sample::Sample(){x=0;coutconstructingnormally\n;}Sample::Sample(intm){x=m;coutconstructingwithanumber:xendl;}voidSample::display(){coutdisplayanumber:xendl;}Sample::~Sample(){coutdestructing\n;}2020/2/23北理珠海学院计算机学院12voidmain(){Sampleobj1;Sampleobj2(20);obj1.display();obj2.display();}解:本题构造函数与析构函数的调用顺序。这里定义了两个对象,先顺序调用obj1和obj2对象的构造函数,再调用各自的成员函数disp(),最后顺序调用obj2和obj1的析构函数。所以输出为:constructingnomallyconstructingwithanumber:20displayanumber:0displayanumber:20destructingdestructing2020/2/23北理珠海学院计算机学院13•#includeiostream.hclassSample{intn;staticintsum;public:Sample(intx){n=x;}voidadd(){sum+=n;}voiddisp(){coutn=n,sum=sumendl;}};intSample::sum=0;//静态数据成员赋初值题8.分析以下程序的执行结果2020/2/23北理珠海学院计算机学院14voidmain(){Samplea(2),b(3),c(5);a.add();a.disp();b.add();b.disp();c.add();c.disp();}解:本题说明静态数据成员的使用方法。在类中定义了一个静态数据成员sum,在main()之前给它赋初值0,然后在main()中定义了三个对象,并执行各自的add()和disp()方法。所以输出为:n=2,sum=2n=3,sum=5n=5,sum=102020/2/23北理珠海学院计算机学院15#includeiostream.hclassSample{intA;staticintB;public:Sample(inta){A=a,B+=a;}staticvoidfunc(Samples);};voidSample::func(Samples){coutA=s.A,B=Bendl;}intSample::B=0;voidmain(){Samples1(2),s2(5);Sample::func(s1);Sample::func(s2);}题9.分析以下程序的执行结果解:本题说明了静态成员函数的使用方法。其中的数据成员B是静态数据成员,求B之值是在构造函数中进行的。所以输出为:A=2,B=7A=5,B=72020/2/23北理珠海学院计算机学院16#includeiostream.hclassSample{intx,y;public:Sample(){x=y=0;}Sample(inta,intb){x=a,y=b;}voiddisp(){coutx=x,y=yendl;}};题10.分析以下程序的执行结果voidmain(){Samples1,s2(1,2),s3(10,20);Sample*Pa[3];Pa[0]=&s1;Pa[1]=&s2;Pa[2]=&s3;for(inti=0;i3;i++)Pa[i]-disp();}2020/2/23北理珠海学院计算机学院17解:本题说明对象指针数组的赋值方法。定义三个对象和一个对象指针数组,通过赋值语句使后者的元素分别指向前面的三个对象(而不是采用上题的赋初值方法),然后使用for语句循环调用各个对象的disp()成员函数。所以输出为:x=0,y=0x=1,y=2x=10,y=202020/2/23北理珠海学院计算机学院18•#includeiostream.hvoidmain(){inta[]={10,20,30,40},*pa=a;int*&pb=pa;pb++;cout*paendl;}题11.分析以下程序的执行结果解:pa为数组的指针,首先指向a[0],pb是pa的引用,当执行pb++时,也使pa指向了a[1],所以输出为:202020/2/23北理珠海学院计算机学院19•#includeiostream.hclassSample{intx;public:Sample(){};Sample(inta){x=a;}Sample(Sample&a){x=a.x+++10;}voiddisp(){coutx=xendl;}};voidmain(){Samples1(2),s2(s1);s1.disp();s2.disp();}题12.分析以下程序的执行结果解:Sample类的Sample(Sample&a)构造函数是一个拷贝构造函数,将a对象的x增1然后加上10后赋给当前对象的x,由于a是引用对象,所以输出为:x=3//++运算的结果x=12//2+102020/2/23北理珠海学院计算机学院20题13下面哪个是正确的重载声明A、intcalc(int,int);intcalc(constint,constint);B、intgetc();doublegetc();C、int*reset(int*);double*reset(double*);
三七文档所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
本文标题:C++类的习题-PPT
链接地址:https://www.777doc.com/doc-3747350 .html