《面向对象程序设计》复习题_第1页
《面向对象程序设计》复习题_第2页
《面向对象程序设计》复习题_第3页
《面向对象程序设计》复习题_第4页
《面向对象程序设计》复习题_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

1、一、选择题1、下列各项中,( )不是面向对象程序设计方法的特点。A. 继承性 B. 健壮性C. 封装性 D. 多态性2、下列有关类和对象的叙述中,正确的是( )。A. 类和对象是同义词B. 类的声明中不能省略用于初始化对象的构造函数C. 对象可以作为函数的参数,也可以由函数返回D. 同类的对象之间构造可以不同3、类中的私有数据指的是( )。A. 访问该数据时,必须确认口令B. 该数据经过加密处理,访问时需解密C. 封装于函数内部且不能直接访问的数据D. 封装于对象内部且不能直接访问的数据4、构造函数的功能是( )。A. 初始化新建立的对象B. 用已有对象初始化新建对象C. 为对象的所有成员分配

2、存储空间D. 为数据成员分配存储空间5、拷贝构造函数的功能是( )。A. 用已知对象初始化另一个对象B. 用对象调用成员函数C. 为数据成员重新分配存储空间D. 用其它类型的数据初始化对象6、下列关于运算符重载的叙述中,正确的是( )。A. 所有的单目运算符都不能被重载B. 运算符被重载后,其原有的优先级与结合性不变C. 需要时,可以自定义一个新的运算符来进行重载D. 运算符都可以用成员函数和友元函数两种形式重载7、有如下类的声明:class oneType private: int a; protected: int b; public: int c;已知x是oneType类的对象,下列语句

3、中,( )是正确的。A. x.a=0; B. x.b=0;C. x.c=0; D. T:a=0;8、以下不能声明为虚函数的是( )。A. 成员函数 B. 派生类的成员函数C. 静态成员函数 D. 析构函数9、下列情形中不可以重载同名函数的是( )。A. 参数个数不同B. 对应的参数类型应不同C. 满足A或BD. 参数的个数和对应类型相同10、以下程序段的作用是动态建立一个( )。 int *p;p=new int *3;for(int j=0; j<3; j+) pj=new int4;A. 4行3列的二维数组B. 3行4列的二维数组C. 大小为12的一维指针数组D. 地址连续的3行4列

4、的二维数组11、有如下参数形式的函数定义,这表示( )。 void fun(const T &a) / T是已声明和定义的类 .A. a是常量对象B. 函数以常量对象a的地址作为参数C. a引用T类的对象作为参数D. a常量引用T类的对象作为参数12、下列程序段的运行结果是( )。int a=1;int &b=a;a+; b+;cout<<a<<" "<<b<<endl;A. 2 3 B. 2 2C. 3 2 D. 3 313、下列程序的运行结果是( )。#include <iostream.h>v

5、oid fun(int &a,int b,int *c) a+=b; b+; *c=0;void main() int x=1, y=2, z=3;fun(x, y, &z);cout<<x<<" "<<y<<” ”<<z<<endl;A. 3 3 0 B. 1 2 3C. 3 2 0 D. 1 3 314、运行下列程序段后,主函数( )。class T int num; public: T(int n=0) num=n; ;void main() T t6; A. 建立对象t,并初始化

6、数据成员num为0B. 建立对象t,并初始化数据成员num为6C. 建立对象数组t,它由6个T对象组成,并初始化数据成员num为0D. 建立对象数组t,它由6个T对象组成,并初始化数据成员num为615、下列程序段表明( )。class T int num; public: T() num=0; T(int n=10) num=n; ;void main() T a; A. 主函数建立对象a,但不进行num的初始化B. 主函数建立对象a,并初始化数据成员num为10C. 主函数建立对象a,并初始化数据成员num为0D. 由于构造函数的歧义性,编译时出错16、下列带缺省参数的函数声明中,( )是

7、正确的。A. void F (int a=0; int b=0; int c);B. void F(int a=0; int b; int c);C. void F(int a=0; int b; int c=0);D. void F(int a; int b=0; int c=0);17、A类和函数fun()定义如下:class A int num; public: void setn(int n) num=n ; A(int x) num=x; ;int fun() A *ptr=new A(15); . 函数fun()中,可将动态建立的对象的数据成员num的值赋为23的语句是( )。A.

8、 ptr->setn(23); B. *ptr.setn(23);C. ptr->n=23; D. ptr->A (23);18、下列程序的运行结果是( )。#include <iostream.h>class T static int number; int value; public: T(int v=0) number+; value=v; T() number-; void display();void T:display() cout<<number<<" "<<value<<endl;

9、 int T:number=0;void main() T a1,a2(1); a1.display(); a2.display(); T *p=new T(10); p->display(); delete p; a1.display();A. 0 0 B. 1 0 C. 2 0 D. 3 01 1 2 0 2 1 3 10 10 3 0 3 10 3 101 0 2 0 2 0 3 019、下列程序的运行结果是( )。#include <iostream.h>class size public: int width,height; size(); size(int,int

10、); size middle(size); void display();size:size() width=0; height=0; size:size(int w,int h) width=w; height=h; size size:middle(const size &a) size b; b.width=(width+a.width)/2; b.height=(height+a.height)/2; return(b);void size:display() cout<<width<<", "<<height<&l

11、t;endl; void main() size x(100,60), y, z; z=x.middle(y); x.display(); y.display(); z.display();A. 100, 60 B. 100, 60 C. 100, 60 D. 100, 600, 0 20, 10 0, 0 0, 050, 30 60, 35 100, 60 0, 020、下列程序的运行结果是( )。#include <iostream.h>#include <cmath.h>class Complex double real,imag; public: Complex

12、(double r, double i) real=r; imag=i; operator double() return(sqrt(real*real + imag*imag); ;void main() Complex c(3.0,4.0); double r=c; cout<<r<<endl;A. 3 B. 4 C. 5 D. 3+421、已知A类是B类的友元,B类是C类的友元,下列情形中错误的是( )。A. B类的成员函数中,访问B类的私有成员B. C类的成员函数中,访问C类的私有成员C. A类的成员函数中,通过B类对象访问B类的私有成员D. A类的成员函数中,

13、通过C类对象访问C类的私有成员22、下列情形中,属于多态性的是( )。A. 一个对象调用不同名称的函数B. 一个对象调用相同名称的函数C. 不同的对象调用不同名称的函数D. 不同的对象调用相同名称的函数23、已知抽象类S派生出T类,下列对象定义中,错误的是( )。A. T b; B. T *pb C. S a; D. S *pa;24、下列程序的执行结果是( )。#include <iostream.h>class A_type public: A_type() cout<<”initializing A_type objectn”; A_type() cout<

14、<”destroying A_type objectn”; ;class B_type: public A_type public: B_type() cout<<”initializing B_type objectn”; B_type() cout<<”destroying B_type objectn”; ;void main() B_type *pb=new B_type; delete pb;A. initializing B_type object B. initializing A_type object destroying B_type obje

15、ct initializing B_type object destroying B_type object destroying A_type objectC. initializing B_type objectD. initializing A_type object initializing A_type object initializing B_type object destroying A_type object destroying A_type object destroying B_type object destroying B_type object二、填空题1、面向

16、对象程序设计中的多态性包括由函数重载实现的 和由虚函数实现的 。2、当一个对象建立时,隐含着对 的一次调用;而当一个对象被删除时,隐含着对 的一次调用。3、C+中运算符的重载可以通过 函数和 函数来实现。4、填写适当语句,完成下列table类的构造函数、拷贝构造函数和析构函数。class table char *name; int len; public: table(char *ps=NULL) if(ps) len=strlen(ps); ; strcpy(name,ps); else len=0; name= ; table(const table &t) if ()

17、 ; name=new charlen+1; strcpy(name,); else name=NULL; len=0; table() if (len) ; ;5、填写适当语句,实现一个用于对数组进行选择排序、元素查找、求元素总和的类模板。数组元素是某种数值类型。#include <iostream.h> class array T *data; int num;public: array(T *d, int n) data=d; num=n; array() void sort(); / 选择排序 int seek(T key); / 查找并返回元素key在数组中的

18、下标 T sum(); / 计算并返回元素总和;void array:sort() int j,k,m; for (j=0; j<num-1; j+) m=j; for (k=j+1; k<num; k+) if (datak<dataj) if (m!=j) temp=dataj; dataj=datam; datam=temp; int array:seek(T key) int j for (j=0; j<num; j+) if (dataj=key) return 1;T array:sum() T s=0; int j; for (j=0; j<num;

19、 j+) return s;三、改错题1、指出以下类的声明和定义中的错误,并更正。class T int num=0;public:void T(int a) num=a; T() cout<<”Bye!n” void setNum ();void setNum () cout<<”Input a number: ”; cin>>num; 2、指出以下类的声明和定义中的错误,并更正。#include <iostream.h>class Test static int x; public:virtual

20、60;static int func(); int x = 100;int func() return x; void main()  cout<<Test:func()<<endl;Test a(1);cout<<a.func();3、指出以下类的声明和定义中的错误,并更正。class A int a;public:A(int x) a=x; showA()  cout<<"a="<<a<<endl; ;class B: public A; int b;public: B(int y):A(int x) b=y; void setData(int x, int y) a=x; b=y; void showB() showA(); cout<<"b="<<B<<endl; ;四、应

温馨提示

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

评论

0/150

提交评论