面向对象程序设计复习题
- 格式:doc
- 大小:80.00 KB
- 文档页数:8
1 《面向对象程序设计》复习题 一、单项选择题 1. (A)是面向对象系统包含的要素。 A、类 B、多态 C、友元 D、重载 2. 下列对常量的定义中,错误的是( C )。 A、MyClass const obj(3,4); B、char * const p="hello"; C、int i=1; const int &ref=i; D、void show() const; 3. 若有如下函数声明:void Fun(int x);,则下列(D )能与该函数进行重载。 A、void Fun(int y); B、void Fun(int x,int y='1'); C、int Fun(int x); D、void Fun(int) const; 4. 下列对构造函数和析构函数的描述中,错误的是( B )。 A、构造函数可以重载 B、析构函数名与类名相同 C、构造函数中可以设置参数的缺省值 D、类中只有一个析构函数 5. 下列对友元的描述中,错误的是( C )。 A、友元破坏了类的封装性 B、友元提高了程序的运行效率 C、友元可以在类外声明和定义 D、友元能够访问类中的私有成员 6. 下列对继承的描述中,正确的是( C )。 A、派生类对象能够访问基类的公有成员 B、派生类继承了基类的公有成员和保护成员 C、派生类对象不能访问基类的保护成员 D、派生类不改变基类成员的访问权限 7. 程序中,编译时出错的语句是(B )。 class Base{ }; 2
class Derived : public Base { }; Derived objD1; Base objB=objD1; //A Base *pb=&objD1; //B Base &refB=objD1; //C Derived objD2=objB; //D 8. 下面对派生类的描述中,正确的是( B )。 A、派生类是对基类的具体化 B、一个派生类可以作为另一个派生类的基类 C、派生类只能有一个直接基类 D、派生类的缺省继承方式是public 9. 实现动态联遍必须通过(A )调用虚函数。 A、对象引用 B、成员名限定 C、对象名 D、构造函数 10. C++流中重载的运算符>>,是一个(B)。 A、用于输出操作的非成员函数 B、用于输入操作的非成员函数 C、用于输出操作的成员函数 D、用于输入操作的成员函数 11. (A)不是面向对象系统包含的要素。 A、多态 B、对象 C、类 D、继承 12. 下列对常量的定义中,错误的是( C )。 A、int const size=10; B、char * const p="Good Luck"; C、void const print(); D、const MyClass obj(10,10); 13. 设Address表示整型变量x的地址,则下列语句执行后的输出结果为(D )。 int x=100,&r=x; cout A、void Fun(int x,int y); B、void Fun(double x); C、void Fun(int x,int y=1); D、void Fun(int x) const; 16. 下列对构造函数和析构函数的描述中,正确的是(A )。 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; //A Base *pb=&objD1; //B Base &refB=objD1; //C Derived objD2=objB; //D 4 21. 下面对派生类的描述中,错误的是( A )。 A、派生类是对基类的具体化 B、派生类能够作为基类继续派生新类 C、派生类可以有多个直接基类 D、派生类的缺省继承方式是private 22. 实现动态联遍不能通过(A )调用虚函数。 A、构造函数 B、对象引用 C、对象指针 D、成员函数 23. 下面( D )不是抽象类的特性。 A、可以说明纯虚函数 B、不能说明抽象类的对象 C、用做基类,提供公共的接口 D、可以定义虚构造函数 24. C++流中重载的运算符<<,是一个(B)。 A、用于输出操作的成员函数 B、用于输出操作的非成员函数 C、用于输入操作的成员函数 D、用于输入操作的非成员函数 二、程序填充题 1. 下列运算符既可以作为类的成员函数重载,也可以作为类的友元函数重载,请在表格中的空白处填上正确的表达式。 表达式 成员函数 友元函数 a+b (1) (2) a++ (3) operator ++ (a, 0) -a a.operator - ( ) (4) 1. 答案: (1) a.operator+(b) (2) operator +(a,b) (3) a.operator++(0) (4) operator –(0) 2. 下列程序执行后的输出结果是12,21,22,请将下列程序补充完整。 #include void fun1( (1) , int b) { int c; c=a; a=b; b=c; } void fun2( (2) , int *b) { int c; c=*a; (3) ; *b=c; } 5 void fun3( (4) , int b) { int c; c=a; (5) ; b=c; } void main(){ int x,y; x=1; y=2; fun1(x,y); cout 三、阅读程序题 1. #include class Test { public: Test (double m,double n,double d):p(d) { x=m; y=n; } void Show(); void Show() const; private: double x, y; const double p; }; void Test::Show() { cout