C++面向对象程序设计复习题.doc
文本预览下载声明
一、单项选择题(在每小题的四个备选答案中,选出一个正确的答案,每小题1分,共15分。)
1.C++语言是从早期的C语言逐渐发展演变而来的。与C语言相比,它在求解问题方法上进行的最大改进是( B )
(A)面向过程 (B)面向对象 (C)安全性 (C)复用性
2.说明内联函数的关键字为( D )
(A)virtual (B)static (C)enum (D)inline
3.下列运算符中,不可以重载的运算符是( B )
(A) [] (B) :: (C)() (D)=
4.下列关于类与对象的说法中,不正确的是 ( C )
( A ) 对象是类的一个实例
( B ) 任何一个对象只能属于一个具体的类
( C ) 一个类只能有一个对象
( D ) 类与对象的关系和数据类型与变量的关系相似
5. 下面有关重载函数的说法中正确的是( C )
( A )重载函数必须具有不同的返回值类型 ( B )重载函数形参个数必须不同
( C )重载函数必须有不同的形参列表 ( D )重载函数名可以不同
6. 下列关于构造函数的描述中,错误的是( D )
( A )构造函数可以设置默认参数 ( B )构造函数在定义类对象时自动执行
( C )构造函数可以是内联函数 ( D )构造函数不可以重载
7.有关析构函数的说法不正确的是( C )
(A)一个类中析构函数有且只有一个
(B)析构函数无任何函数返回类型
(C)析构函数和构造函数一样可以有形参
(D)析构函数作用是在对象被撤消时收回先前分配的内存
8.对于重载X类的前缀方式++的友元函数为( A )
(A) X operator++(X)
(B) X X::operator++( )
(C) X operator++(X, int)
(D) X X::operator++(int i)
9.关于派生类中的构造函数和析构函数,以下说法正确的是( C )
( A ) 派生类的构造函数必须显式调用基类的构造函数
( B ) 派生类的析构函数必须显式调用基类的析构函数
( C ) 构造函数按基类到派生类的次序执行
( D ) 析构函数按基类到派生类的次序执行
10.考虑函数原型void testfunc ( float x,int y = 7, char z = ‘*’ ), 下面的函数调用中,属于不合法调用的是 ( C )
( A ) testfunc (5.31) ( B ) testfunc (5.31,8) ( C ) testfunc (5.31,’#’) ( D ) testfunc (5.31,0,’*’)
11.TestClass为一个类,执行“TestClass x[3],*p[2];”语句会自动调用该类的构造函数( B )次
( A ) 2 ( B ) 3 ( C ) 4 ( D ) 5
12.以下关于指针和引用的说法正确的是( D )
( A ) 指针和引用都必须在声明时对其进行初始化
( B ) 指针和引用完全一样
( C ) 指针和引用本身都是数据类型
( D ) 指针和引用都可以作为参数传递
13.若在类X外有函数调用X ::func( ),则函数func( )是类X的( C )函数
(A)私有静态成员函数 (B)公有非静态成员函数
(C)公有静态成员函数 (D)友元函数
14.关于this指针,以下( B )不正确
(A)this指针是指向对象的指针 (B)this 指针不可以指向常量
(C)this指针不能作为赋值运算的目标对象 (D)this指针是指向对象的常指针
15.以下说法错误的是( D )
( A ) 无论建立多少个该类的对象,都只有一个静态数据的存储空间。
( B ) 静态数据成员属于类,而不属于对象。
( C ) 静态成员函数没有this指针。
( D ) 静态数据成员的存储空间由构造函数来分配。
1. # include iostream.h
class XX
{
protected:
int k;
public:
XX ( int n = 5 ) : k (n) { }
~XX ( )
{ cout “XX”;}
virtual void f ( ) ;
};
void XX :: f ( )
{ cout k +3;}
class YY
显示全部