面向对象 第四次作业答案_第1页
面向对象 第四次作业答案_第2页
面向对象 第四次作业答案_第3页
面向对象 第四次作业答案_第4页
面向对象 第四次作业答案_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、面向对象程序设计技术 作业四一、填空题 1、在定义类对象的语句执行时,系统在建立每个对象的过程中将自动调用该类的 构造函数 使其初始化。 2、当一个类对象被撤消时将自动调用该类的 析构函数 。 3、对基类数据成员的初始化是通过执行派生类构造函数中的 初始化表 来实现的。 4、对一个类中的数据成员的初始化可以通过构造函数中的 初始化表 实现,也可以通过构造函数中的 赋值语句 实现。 5、在一个派生类中,对基类成员、类对象成员和非类对象成员的初始化次序是先 基类成员 ,后 类对象成员 ,最后为 非对象成员 。 6、当撤消一个含有基类和类对象成员的派生类对象时,将首先完成 派生类本身 的析构函数定义

2、体的执行,接着完成 类对象成员 的析构函数定义体的执行,最后完成 基类成员 的析构函数定义体的执行。 7、设px是指向一个类动态对象的指针变量,则执行”delete px;”语句时,将自动调用该类的 析构函数 。 8、当一个类对象离开它的作用域时,系统将自动调用该类的 析构函数 。 9、假定一个类对象数组为AN,当离开它的作用域时,系统自动调用该类析构函数的次数为 N次 。 10、假定AB为一个类,则执行”AB a10;”语句时,系统自动调用该类构造函数的次数为 10次 。 11、假定用户没有给一个名为AB的类定义构造函数,则系统为其隐含定义的构造函数为 空构造函数 。 12、假定用户没有给一

3、个名为AB的类定义析构函数,则系统为其隐含定义的析构函数为空构造函数 。 13、若需要把一个函数”void F();”定义为一个类AB的友元函数,则应在类AB的定义中加入一条语句: friend void F(); 。 14、若需要把一个类AB定义为一个类CD的友元类,则应在类CD的定义中加入一条语句: feiend class AB; 。 15、假定一个类AB中有一个静态整型成员bb,在类外为它进行定义并初始化为0时,所使用的语句为 AB:bb=0; 。 16、假定类AB中有一个公用属性的静态数据成员bb,在类外不通过对象名访问该成员bb的写法为 AB:bb 。 17、当类中一个字符指针成员

4、指向具有n个字节的存储空间时,它所能存储字符串的最大长度为 n-1 。 18、假定AB为一个类,则该类的拷贝构造函数的声明语句为 AB:AB(AB&) 。 19、对类对象成员的初始化是通过执行构造函数中的 初始化表 完成的。 20、对于类中定义的成员,其隐含访问权限为 private ,对于结构中定义的成员,其隐含访问权限为 public 。 21、一个类的友元函数或友元类能够通过成员操作符访问该类的 所有数据成员和函数成员 。 22、假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为: AB operator+(AB,AB);

5、 。 23、在C+流类库中,根基类为 ios 。 24、在C+流类库中,输入流类和输出流类的名称分别为 istream 和 ostream .25、若要在程序文件中进行标准输入输出操作,则必须在开始的include命令中使用 iosteam.h 头文件。 26、若要在程序文件中进行文件输入输出操作,则必须在开始的include命令中使用 fstream.h 头文件。 27、当从字符文件中读取回车和换行两个字符时,被系统看作为一个 换行符 。 28、当使用ifsream流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式为 读取的文本文件 ,当使用ofstream流类定义一个流对象并打开一

6、个磁盘文件时,文件的隐含打开方式为 写入的文本文件 。 29、当需要使用istrstream流类定义一个流对象并联系一个字符串时,应在文件开始使用include命令,使之包含 strstrea.h 文件。 二、写出下列程序运行后的输出结果 1#include<iostream.h> class A int a,b; public: A() a=b=0; A(int aa, int bb) a=aa;b=bb; cout<<a<<''<<b<<endl; ; void main() A x, y(6,3), z(8,10

7、); 输出结果:2 #include<iostream.h> class A int a,b; public: A(int aa=0, int bb=0):a(aa),b(bb) cout<<"Constructor!"<<a+b<<endl; ; void main() A x, y(2,5), z(y); 输出结果:3 #include<iostream.h> class A int *a; public: A(int aa=0) a=new int(aa); cout<<"Constru

8、ctor!"<<*a<<endl; ; void main() A x2; A *p=new A(5); delete p; 输出结果:4 #include<iostream.h> class A int a; public: A(int aa=0):a(aa) A()cout<<"Destructor!"<<a<<endl; ; void main() A x(5); A *p=new A(10); delete p; 输出结果:5 #include<iostream.h> cl

9、ass A int *a; public: A(int x) a=new int(x); cout<<"Constructor!"<<*a<<endl; A()delete a;cout<<"Destructor!"<<endl; ; void main() A x(9),*p; p=new A(12); delete p; 输出结果:6 #include<iostream.h> class A int a; public: A(int aa=0):a(aa) cout<<

10、;"Constructor A!"<<a<<endl; ; class B:public A int b; public: B(int aa,int bb):A(aa),b(bb) cout<<"Constructor B!"<<b<<endl; ; void main() B x(2,3),y(4,5); 输出结果:7 #include<iostream.h> class A int a; public: A(int aa=0)a=aa; A()cout<<"

11、Destructor A!"<<a<<endl; ; class B:public A int b; public: B(int aa=0,int bb=0):A(aa)b=bb; B()cout<<"Destructor B!"<<b<<endl; ; void main() B x(5),y(6,7); 输出结果:8 #include<iostream.h> #include<stdlib.h> class A int a,b;char op; public: A(int aa

12、,int bb,char ch)a=aa;b=bb;op=ch; int Comp() switch(op) case'+':return a+b; case'-':return a-b; case'*':return a*b; case'/':if(b!=0)return a/b;else exit(1); case'%':if(b!=0)return a%b;else exit(1); default:exit(1); void SetA(int aa,int bb,char ch) a=aa;b=bb;op=

13、ch; ; void main(void) A x(3,5,'*'); int a=x.Comp(); x.SetA(4,9,'+'); a+=x.Comp(); x.SetA(13,8,'%'); a+=x.Comp(); cout<<"a="<<a<<endl; 输出结果:9 #include<iostream.h> class B int a,b; public: B()a=b=0; B(int aa,int bb)a=aa;b=bb; B operator+(B&

14、x) B r; r.a=a+x.a; r.b=b+x.b; return r; B operator-(B&x) B r; r.a=a-x.a; r.b=b-x.b; return r; void OutB() cout<<a<<' '<<b<<endl; ; void main() B x(6,5),y(13,3),z1,z2; z1=x+y;z2=x-y; z1.OutB();z2.OutB(); 输出结果:10 #include<iostream.h> template<class TT> c

15、lass FF TT a1,a2,a3; public: FF(TT b1,TT b2,TT b3) a1=b1;a2=b2;a3=b3; TT Sum()return a1+a2+a3; ; void main() FF<int>x(8,3,4),y(5,9,11); cout<<x.Sum()<<' '<<y.Sum()<<endl; 输出结果:三、写出下列每个函数的功能 1. #include <iomanip.h> #include <fstream.h> #include <st

16、ring.h> void JA(char *fname) ofstream fout(fname); char a20; cin>>a; while(strcmp(a,"end")!=0) fout<<a<<endl; cin>>a; fout.close(); void JB(char *fname) ifstream fin(fname); char a20; int i=0; while(fin>>a) cout<<a<<endl; i+; fin.close(); cout&l

17、t;<"i="<<i<<endl; void main() JA("c:gm.dat"); JB("c:gm.dat"); 2 #include <iomanip.h> #include <fstream.h> void JB(char *fname) ifstream fin(fname); char a20; int i=0; while(fin>>a) cout<<a<<endl; i+; fin.close(); cout<<

18、"i="<<i<<endl; 3 #include <iomanip.h> #include <fstream.h> void JC(char *fname,int n) ofstream fout(fname,ios:out|ios:binary); int x; for(int i=0;i<n;i+) cin>>x; fout.write(char *)&x,sizeof(x); fout.close(); void JD(char * fname) ifstream fin(fname,ios:in|ios:nocreate|ios:binary); int x,s=0,n=0; while(fin.read(char *)&x,sizeof(x) s+=x;n+; cout<<n<<' '<<s<<' '<<float(s)/n<<endl; fin.close; void main() JC("c:gm.bat",5); JD("c:gm.bat");

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论