面向对象程序设计复习题
面向对象程序设计复习题
《面向对象程序设计》复习题
一、单项选择题
1. (A)是面向对象系统包含的要素。
A、类
B、多态
C、友元
D、重载
2. 下列对常量的定义中,错误的是( C )。
A、MyClass const obj(3,4);
B、char * const p="hello"; D、void show() const;
B、void Fun(int x,int y='1'); D、void Fun(int) const;
C、int i=1; const int &ref=i; A、void Fun(int y); C、int Fun(int x);
3. 若有如下函数声明:void Fun(int x);,则下列(D )能与该函数进行重载。
4. 下列对构造函数和析构函数的描述中,错误的是( B )。
A、构造函数可以重载 B、析构函数名与类名相同
C、构造函数中可以设置参数的缺省值 D、类中只有一个析构函数
5. 下列对友元的描述中,错误的是( C )。
A、友元破坏了类的封装性 B、友元提高了程序的运行效率 C、友元可以在类外声明和定义 D、友元能够访问类中的私有成员
6. 下列对继承的描述中,正确的是( C )。
A、派生类对象能够访问基类的公有成员 B、派生类继承了基类的公有成员和保护成员 C、派生类对象不能访问基类的保护成员 D、派生类不改变基类成员的访问权限 7. 程序中,编译时出错的语句是(B )。
class Base{ };
面向对象程序设计复习题
class Derived : public Base { }; Derived objD1;
Base objB=objD1; Base *pb=&objD1; Base &refB=objD1; Derived objD2=objB;
//A //B //C //D
8. 下面对派生类的描述中,正确的是( B )。
A、派生类是对基类的具体化
B、一个派生类可以作为另一个派生类的基类 C、派生类只能有一个直接基类 D、派生类的缺省继承方式是public
9. 实现动态联遍必须通过(A )调用虚函数。
A、对象引用
B、成员名限定
C、对象名
D、构造函数
10. C++流中重载的运算符>>,是一个(B)。
A、用于输出操作的非成员函数 C、用于输出操作的成员函数
B、用于输入操作的非成员函数 D、用于输入操作的成员函数
11. (A)不是面向对象系统包含的要素。
A、多态
B、对象
C、类
D、继承
12. 下列对常量的定义中,错误的是( C )。
A、int const size=10; C、void const print();
int x=100,&r=x;
cout<<x<<'-'<<r<<endl; A、Address-100
B、100-Address D、100-100 B、Fun(3, '0') D、Fun(2,4, 'a')
B、char * const p="Good Luck"; D、const MyClass obj(10,10);
13. 设Address表示整型变量x的地址,则下列语句执行后的输出结果为(D )。
C、Address-Address A、Fun()
14. 若函数原型为void Fun(int x=9,int y=8,char z='7'),则下列调用错误的是(B)。
C、Fun(1,2)
15. 若有如下函数声明:void Fun(int x);,则下列( C )不能与该函数进行重载。
面向对象程序设计复习题
A、void Fun(int x,int y); C、void Fun(int x,int y=1); A、析构函数不可以重载
B、void Fun(double x); D、void Fun(int x) const;
16. 下列对构造函数和析构函数的描述中,正确的是(A )。
B、构造函数不能定义为内联函数 C、构造函数中不能设置参数的缺省值 D、析构函数名与类名不同
17. 下面对静态成员的描述中,错误的是( C )。
A、静态成员的提出是为了解决数据共享问题 B、静态数据成员的初始化在类体外进行 C、类的不同对象有不同的静态数据成员值
D、静态成员函数可以直接访问类中的静态数据成员 18. 下列对友元的描述中,正确的是( D )。
A、友元可以在类外声明和定义 B、友元降低了程序的运行效率 C、友元不能访问类中的保护成员 D、友元破坏了类的封装性
19. 下列对继承的描述中,错误的是( C )。
A、派生类对象不能访问基类的保护成员
B、派生类对基类成员的访问权限随着继承方式而改变 C、派生类成员可以访问基类的私有成员 D、派生类继承了基类的所有成员 20. 程序中,编译时出错的语句是(D )。
class Base{ };
class Derived : public Base { }; Derived objD1; Base objB=objD1; Base *pb=&objD1; Base &refB=objD1; Derived objD2=objB;
//A //B //C //D
面向对象程序设计复习题
21. 下面对派生类的描述中,错误的是( A )。
A、派生类是对基类的具体化 B、派生类能够作为基类继续派生新类 C、派生类可以有多个直接基类 D、派生类的缺省继承方式是private
22. 实现动态联遍不能通过(A )调用虚函数。
A、构造函数
B、对象引用
C、对象指针
D、成员函数
23. 下面( D )不是抽象类的特性。
A、可以说明纯虚函数 B、不能说明抽象类的对象 C、用做基类,提供公共的接口 D、可以定义虚构造函数
24. C++流中重载的运算符<<,是一个(B)。
A、用于输出操作的成员函数 C、用于输入操作的成员函数
二、程序填充题
1. 下列运算符既可以作为类的成员函数重载,也可以作为类的友元函数重载,请在
1. 答案: (1) a.operator+(b)
(3) a.operator++(0)
2. 下列程序执行后的输出结果是12,21,22,请将下列程序补充完整。
#include <iostream.h>
void fun1(void fun2(
B、用于输出操作的非成员函数 D、用于输入操作的非成员函数
(2) operator +(a,b)
(4) operator –(0)
{ int c; c=a; a=b; b=c; } { int c; c=*a; }
面向对象程序设计复习题
void fun3({ int c; c=a; }
void main(){ int x,y;
x=1; y=2; fun1(x,y); cout<<x<<y<<','; x=1; y=2; fun2(&x,&y); cout<<x<<y<<','; x=1; y=2; fun3(x,y); cout<<x<<y<<endl; }
2. 答案: (1) int a
(2) int *a
(3) *a=*b
(4) int &a
(5) a=b
3. 下列程序执行后的输出结果是B0 D00 B1 D23 ~D ~B ~D ~B,请将下列程序补充
完整。
class Base { public:
Base(int i=0) {x = i; cout<<'B'<<x<<' ';} ~Base() { cout<<"~B"<<x<<' '; } private: int x; };
class Derived : public Base {
int y, z; public:
};
void main() { }
3. 答案:(1) Derived(int a=0,int b=0,int c=0): Base(a) { y=b; z=c; cout<<'D'<<y<<z<<' ';}
(2) ~Derived() { cout<<"~D "; }
Derived obj1; Derived obj2(1,2,3);
面向对象程序设计复习题
三、阅读程序题 1.
#include <iostream.h> class Test { public:
Test (double m,double n,double d):p(d) { x=m; y=n; } void Show(); void Show() const;
private: };
void Test::Show() { }
void Test::Show() const { }
void main() { }
答案:8.9 2.5
p=3.1416 2.5 8.9 const
double x, y; const double p;
cout<<x<<","<<y<<endl; cout<<"p="<<p<<endl;
cout<<x<<","<<y<<" const"<<endl; cout<<"p="<<p<<" const"<<endl;
Test a(8.9,2.5,3.1416); a.Show();
const Test b(2.5,8.9,3.14); b.Show();
p=3.14 const
面向对象程序设计复习题
2.
#include <iostream.h> class A{ public: A(int i){ cout<<"Constructor"<<endl; p=new int(i);} A(A& r){cout<<"Copy constructor"<<endl; p=new int(*r.p);}
~A(){cout<<"Destructor"<<endl; delete p;}
A& A::operator =(A& r); void output() {cout<<*p<<endl;}; private:
int *p;
};
A& A::operator =(A& r) { cout<<"Assignment"<<endl; if(this==&r) return *this;
delete p; p=new int(*r.p);
return *this;
};
void main(){ A a(5); A b=a;
A c(6); c=a;
c.output();
};
答案:Constructor
Copy constructor Constructor Assignment 5
面向对象程序设计复习题
Destructor Destructor
3.
Destructor #include <iostream.h> class Base1{ public: };
class Base2{ public: };
class Derived : public Base2,public Base1{ public: };
void main(){ }
答案:Base2's con. 1
Base1's con. 2 Derived's con. Derived's des. Base1's des.
Base2's des.
Derived obj(1,2);
Derived(int x,int y):Base1(y),Base2(x) { cout<<"Derived's con."<<endl; } ~Derived() { cout<<"Derived's des."<<endl; } Base2(int x) { cout<<"Base2's con. "<<x<<endl; } ~Base2() { cout<<"Base2's des. "<<endl; } Base1(int x) { cout<<"Base1's con. "<<x<<endl; } ~Base1() { cout<<"Base1's des. "<<endl; }
相关推荐:
- [文秘资料]2011年社会治安综合治理暨平安建设工作总结
- [文秘资料]六年级数学试卷分析
- [文秘资料]长期使用呼吸机成功脱机的护理
- [文秘资料]山东省诚信示范企业申报材料 日照华泰纸业有限公司
- [文秘资料]《中国药典》2015版通则0521气相色谱法
- [文秘资料]电磁波测井的现状和发展趋势
- [文秘资料]三利超市消防应急预案
- [文秘资料]亳效办[2010]11号(督查通报(五))
- [文秘资料]植物多醣抗氧化剂Ambrotose AO
- [文秘资料]【优质文档】项目工作计划表模板-易修改word版 (7页)
- [文秘资料]2013年度黑河学院拟授奖科研成果
- [文秘资料]大玄空挨星法详解
- [文秘资料]基于MODIS与HJ_1_B数据的雪盖率反演及其相关因子分析_
- [文秘资料]护理中级职称考试试题及答案[1]
- [文秘资料]单片机实训选题工作
- [文秘资料]301_双对置二冲程柴油机内连杆轴承润滑特性分析_北方
- [文秘资料]电池级氟化锂行业规模调研及市场前景分析报告2018年目
- [文秘资料]2017-2018学年云南省玉溪市峨山民中高一下学期第一次
- [文秘资料]我国铁路运输企业引入社会资本的研究
- [文秘资料]现代大学英语精读第二版book2unit6
- 2019-2025年中国金融租赁行业调查分析
- 2005年经济师中级金融专业知识与实务试
- 中国茶叶行业市场消费状况调查及投资发
- 高一化学糖类、油脂、蛋白质的在生产、
- 生物教学课件PPT模板
- 建筑工程工程量计算规则
- 33-员工培训实务(布衣公子作品)2013.02
- 目录-2018-2023年中国油田服务行业市场
- 2013版高中全程复习方略配套课件:选修
- Needlepoint has always been an eleg
- 子公司资不抵债情况下合并会计报表的编
- 如何编制消防变频气压供水成套设备项目
- 2015年山西大学文学院中外新闻传播史考
- 鲁教版英语九年级标题及语法点
- 冬季预防跌倒措施
- 吉林省养殖业畜禽粪便环境污染现状及防
- 电大法学自我鉴定
- 如何提高你的绘画和设计技巧(原创理论
- 机械专业大学生职业生涯规划书范文
- 浙江省高校计算机等级考试大纲