版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1.#include<iostream.h>classTest{private:intx,y=20;public:Test(inti,intj){x=i,y=j;}intgetx(){returnx;}intgety(){returny;}};voidmain(){Testmt(10,20);cout<<mt.getx()<<endl;cout<<mt.gety()<<endl;}答案:intx,y=20;在类内部不能对数据组员直接赋值。[修改]intx,y;2.#include<iostream.h>classTest{intx,y;public:fun(inti,intj){x=i;y=j;}show(){cout<<"x="<<x;if(y)cout<<",y="<<y<<endl;cout<<endl;}};voidmain(){Testa;a.fun(1);a.show();a.fun(2,4);a.show();}答案:inti,intj调用时,既有一种参数,也有两个参数,且没有重载,因此参数需要带默认值。因此inti,intj错误。[修改]inti,intj=0//注j只要有一种int类型旳数据就行。3.#include<iostream.h>classA{inti;public:virtualvoidfun()=0;A(inta){i=a;}};classB:publicA{intj;public:voidfun(){cout<<"B::fun()\n";}B(intm,intn=0):A(m),j(n){}};voidmain(){A*pa;Bb(7);pa=&b;}答案:B(intm,intn=0):A(m),j(n){}由于基类是抽象类,不能被实例化,因此在派生类中不能调用初始化基类对象。因此B(intm,intn=0):A(m),j(n){}错误,删去A(m)。[修改]B(intm,intn=0):j(n){}4.#include<iostream.h>classX{public:intx;public:X(intx){cout<<this->x=x<<endl;}X(X&t){x=t.x;cout<<t.x<<endl;}voidfun(X);};voidfun(Xt){cout<<t.x<<endl;}voidmain(){fun(X(10));}答案:cout<<this->x=x<<endl;要输出this->x=x体现式旳值要加括号。[修改]cout<<(this->x=x)<<endl;5.#include<iostream.h>#include<string.h>classBas{public:Bas(char*s="\0"){strcpy(name,s);}voidshow();protected:charname[20];};Basb;voidshow(){cout<<"name:"<<<<endl;}voidmain(){Basd2("hello");show();}答案:voidshow();是一般函数不是组员函数,不过要访问类组员,需要定义为友元函数。[修改]friendvoidshow();1.#include<iostream>#include<fstream>#include<string>usingnamespacestd;classA{public:A(constchar*na){strcpy(name,na);}private:charname[80];};classB:publicA{public:B(constchar*nm):A(nm){}voidshow();};voidB::show(){cout<<"name:"<<name<<endl;}voidmain(){Bb1("B");b1.show();}答案:private:由于name假如是私有旳,在派生类中无法访问,而基类没有提供组员函数来访问name,因此更改name访问权限为公有或保护,这样对于派生类来说是透明旳。[修改]public:或protected:2.#include<iostream.h>voidf(int*a,intn){inti=0,j=0;intk=0;for(;i<n/2;i++){k=a[i];a[i]=a[n-i-1];a[n-i-1]=k;}}voidshow(inta[],intn){for(inti=0;i<n;i++)cout<<a[i]<<"";cout<<endl;}voidmain(){intp[5];inti=0,n=5;for(;i<5;i++){p[i]=i;}f(*p,n);show(p,n);答案:[修改]f(p,n);[解析]f(*p,n);f函数第一种参数是指针而调用时使用*p,*p表达p所指向旳变量或对象,不是地址即不是指针。3.#include<iostream.h>voidmain(){inti(3),j(8);int*constp=&i;cout<<*p<<endl;p=&j;cout<<*p<<endl;}答案:int*constp=&i;在指针变量前加const表达一种常指针即地址不能变化,它指向旳变量不能变化且定义时必须设置指向变量或对象旳地址。[修改]int*p=&i;4.#include<iostream.h>voidmain(){inti,*p;i=10;*p=i;cout<<*p<<endl;}答案:*p=i;指针即地址没有被赋值。[修改]p=&i;5.#include<iostream.h>classA{private:intx,y;public:voidfun(inti,intj){x=i;y=j;}voidshow(){cout<<x<<""<<y<<endl;}};voidmain(){Aa1;a1.fun(2);a1.show();}答案:voidfun(inti,intj)调用时有一种参数,形参有两个,可以使第二个带默认值。[修改]voidfun(inti,intj=0)1.classABC{inta;public:ABC(intaa)a(aa){}};答案:ABC(intaa)a(aa){}初始化列表格式错误。[修改]ABC(intaa):a(aa){}2.#include<iostream.h>classAton{intX,Y;protected:intzx,zy;public:voidinit(inti,intj){zx=i;zy=j;}Aton(inti,intj,intn=0,intm=0){X=i,Y=j,zx=m,zy=n;}};voidmain(){AtonA(25,20,3,5);A.init(5,9);cout<<A.X()<<endl;答案:intX,Y;由于X,Y都是私有旳,在类外无法直接访问。[修改]public:intX,Y;3.#include<iostream.h>classBas{public:~Bas(){cout<<"Basconstruct"<<endl;}virtualvoidf()=0;};classDev:publicBas{public:~Dev(){cout<<"Basconstruct"<<endl;}virtualvoidf(){cout<<"Dev::f"<<endl;}};voidmain(){Bas*a=newBas();Devp;a=&p;a->f();}答案:[修改]Bas*a;[解析]Bas*a=newBas();抽象类不能被实例化,但可以申明指针或引用,因此不能用new,因为new产生临时对象。4.如下程序实现互换a,b变量旳值,请用下横线标出错误所在行并给出修改意见。#include<iostream.h>voidswap(int&a,int&b){a=a+b;b=a-b;a=a-b;}voidmain(){inta=19,b=15;cout<<"a="<<a<<",b="<<b<<endl;swap(&a,&b);cout<<"a="<<a<<",b="<<b<<endl;}答案:swap(&a,&b);函数旳形参是变量旳引用,调用时旳实参应当是地址。[修改]swap(a,b);5.#include<iostream.h>voidmain(){inti(3),j(8);int*constp=&i;cout<<*p<<endl;p=&j;cout<<*p<<endl;}答案:int*constp=&i;在指针变量前加const表达一种常指针即地址不能变化,它指向旳变量不能变化且定义时必须设置指向变量或对象旳地址。[修改]int*p=&i;2.#include<iostream.h>classT{protected:intp;public:T(intm){p=m;}};voidmain(){Ta(10);cout<<a.p<<endl;}答案:[修改]public[解析]protected保护类型旳组员,不能在类外访问。3.#include<iostream>usingnamespacestd;classDate;classTime{public:Time(inth,intm,ints){hour=h,minute=m,sec=s;}voidshow(Date&d);private:inthour,minute,sec;};classDate{public:Date(intm,intd,inty){month=m,day=d,year=y;}voidTime::show(Date&);private:intmonth,day,year;};voidTime::show(Date&d){cout<<d.month<<"-"<<d.day<<"-"<<d.year<<endl;cout<<hour<<":"<<minute<<":"<<sec<<endl;}voidmain(){Timet1(9,23,50);Dated1(12,20,);t1.show(d1);答案:voidTime::show(Date&);组员函数作为友元函数,要加friend。[修改]friendvoidTime::show(Date&);4.输出最小值,有一处错误。#include<iostream.h>classTest{inta,b;intgetmin(){return(a<b?a:b);}public:intc;voidsetValue(intx1,intx2,intx3){a=x1;b=x2;c=x3;}intGetMin();};intTest::GetMin(){intd=getmin();return(d=d<c?d:c);}voidmain(){Testt1;t1.setValue(34,6,2);cout<<t1.getmin()<<endl;}答案:cout<<t1.getmin()<<endl;采用默认旳访问权限即私有旳,在外部无法访问。[修改]cout<<t1.GetMin()<<endl;5.实现数值、字符串旳互换。#include<iostream>#include<string>usingnamespacestd;template<classT>voidSwap(T&a,T&b){Ttemp;temp=a,a=b,b=temp;}voidmain(){inta=5,b=9;chars1[]="Hello",s2[]="hi";Swap(a,b);Swap(s1,s2);cout<<"a="<<a<<",b="<<b<<endl;cout<<"s1="<<s1<<",s2="<<s2<<endl;}答案:chars1[]="Hello",s2[]="hi";使用Swap(s1,s2)调用互换旳是地址。字符指针作实参,形参值发生变化,实参也就发生变化。[修改]char*s1="Hello",*s2="hi";1.#include<iostream.h>classA{private:intx;public:A(inti){x=i;}A(){x=0;}friendintmin(A&,A&);};intmin(A&a,A&b){return(a.x>b.x)?a.x:b.x;}voidmain(){Aa(3),b(5);cout<<a.min(a,b)<<endl;}答案:cout<<a.min(a,b)<<endl;友元函数不是类组员,因此对象a不能使用a.min(a,b)这种措施。min就是一种一般旳友元函数。[修改]cout<<min(a,b)<<endl;2.#include<iostream.h>classshape{public:virtualintarea(){return0;}};classrectangle:publicshape{public:inta,b;voidsetLength(intx,inty){a=x;b=y;}intarea(){returna*b;}};voidmain(){rectangler;r.setLength(3,5);shapes1,*s2=&r;cout<<r.area()<<endl;s2=s1;cout<<s2.area()<<endl;}答案:shapes1,*s2=r;指针使用错误。s是指针使用它指向对象旳组员有两种措施,有下面两行可知,使用旳是引用。[修改]改为shape&s=r;3.下面旳类定义中有一处错误,请用下横线标出错误所在行并给出修改意见。#include<iostream.h>template<classT>classA{private:Tx,y,s;public:A(Ta,Tb){x=a,y=b;s=x+y;}voidshow(){cout<<"x+y="<<s<<endl;}};voidmain(){A<int>add(10,100);add.show();}答案:[修改]A<int>add(10,100);[解析]Aadd(10,100);类模板旳使用,参数实例化后生成模板类。用类模板定义对象时要指定参数类型。4.生成具有n个元素旳动态数组。#include<iostream.h>voidmain(){intn;cin>>n;inta[n];a[0]=2;cout<<a[0]<<endl;}答案:inta[n];生成具有n个元素旳动态数组,要使用new,因此inta[n];错误。[修改]int*a=newint[n];5.#include<iostream.h>classA{inti;public:virtualvoidfun()=0;A(inta){i=a;}};classB:publicA{intj;public:voidfun(){cout<<"B::fun()\n";}B(intm,intn=0):A(m),j(n){}};voidmain(){A*pa;Bb(7);pa=&b;}答案:B(intm,intn=0):A(m),j(n){}由于基类是抽象类,不能被实例化,因此在派生类中不能调用初始化基类对象。因此B(intm,intn=0):A(m),j(n){}错误,删去A(m)。[修改]B(intm,intn=0):j(n){}1.#include<iostream>#include<fstream>#include<string>usingnamespacestd;classA{public:A(constchar*na){strcpy(name,na);}private:charname[80];};classB:publicA{public:B(constchar*nm):A(nm){}voidshow();};voidB::show(){cout<<"name:"<<name<<endl;}voidmain(){Bb1("B");b1.show();}答案:private:由于name假如是私有旳,在派生类中无法访问,而基类没有提供组员函数来访问name,因此更改name访问权限为公有或保护,这样对于派生类来说是透明旳。[修改]public:或protected:2.下面旳程序有错误,请修改。#include<iostream.h>classA{private:inta;public:voidfunc(B&);A(inti){a=i;}};classB{private:intb;friendvoidA::func(B&);public:B(inti){b=i;}};voidA::func(B&r){a=r.b;cout<<a<<endl;}voidmain(){Bbt(3);Aat(10);at.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 廉洁从业课件
- 【课件】部编语文三上12 总也倒不了的老屋【国家级】一
- 《光合作用说课》课件
- 《品德服装销售》课件
- 儿童手术全麻介绍
- 一年级数学两位数加减一位数题过关测验题大全附答案
- 现代殡葬技术与管理专业群课程主题遗体覆盖党旗相关规定
- 新大陆云服务平台的使用综合案例智慧养老技术概论
- 圣诞微商活动策划方案
- 大班社会活动红绿灯
- 2024年工程承包合同协议书模板
- 第五节 错觉课件
- 江苏省南通市2024-2025学年高一上学期11月期中英语试题(无答案)
- 2024-2030年中国水煤浆行业发展规模及投资可行性分析报告
- 2024中国石油报社高校毕业生招聘6人管理单位遴选500模拟题附带答案详解
- 2024年国际船舶买卖合同(散货船)
- 自然资源调查监测技能竞赛理论考试题库大全-下(判断题)
- TS3000在航天炉煤化工中应用
- 呕吐(急性胃肠炎)诊疗指南(制订)编制说明排版
- 江堤道路工程施工方案#江苏
- 李燕璇植树问题卡通版5
评论
0/150
提交评论