教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 范文大全 > 文秘资料 >

面向对象程序设计复习题

来源:网络收集 时间:2024-05-19
导读: 面向对象程序设计复习题 《面向对象程序设计》复习题 一、单项选择题 1. (A)是面向对象系统包含的要素。 A、类 B、多态 C、友元 D、重载 2. 下列对常量的定义中,错误的是( C )。 A、MyClass const obj(3,4); B、char * const p=hello; D、void show

面向对象程序设计复习题

《面向对象程序设计》复习题

一、单项选择题

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; }

面向对象程序设计复习题.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/fanwen/1999918.html(转载请注明文章来源)
Copyright © 2020-2021 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)