C++程序设计练习题一
一、单项选择题
1.C++是一种(B)的程序设计语言。
A. 面向对象
B. 即可面向过程,又可面向对象
C. 面向过程
D. 面向系统
2.在下面有关析构函数特征的描述中,正确的是(C)。
A. 一个类中可以定义多个析构函数
B. 析构函数名与类名完全相同
C. 析构函数不能指定返回类型
D. 析构函数可以有一个或多个参数
3.下面对于友元函数描述正确的是(C)。
A. 友元函数的实现必须在类的内部定义
B. 友元函数是类的成员函数
C. 友元函数破坏了类的封装性和隐藏性
D. 友元函数不能访问类的私有成员
4.下面描述中,表达错误的是(C)。
A. 公有继承时基类中的public成员在派生类中仍是public的
B. 公有继承时基类中的private成员在派生类中仍是private的
C. 公有继承时基类中的protected成员在派生类中仍是protected的
D. 保护继承时基类中的public成员在派生类中是private的
5.所谓多态性是指(B)
A. 不同的对象调用不同名称的函数
B. 不同的对象调用相同名称的函数
C. 一个对象调用不同名称的函数
D. 一个对象调用不同名称的对象
6.重载赋值操作符时,应声明为(C)函数。
A. 友元
B. 虚
C. 成员
D. 多态
7.下列对模板的声明错误的是(B)。
A. template <class T1,typename T2>
B. template <class T1, T2>
C. template < typename T>
D. template <class T1,class T2,class T3>
8.下列类中(D)不是输入流类istream的派生类。
A. ifstream
B.istrstream
C. iostream
D. ofstream
9.(D)不是构造函数的特征。
A. 构造函数的函数名与类名相同 B 构造函数可以重载
C. 构造函数可以设置缺省参数 D构造函数必须指定类型说明
10.下列语句中错误的是( D )。
A. int *p=new int (10);
B. int *p=new int[10];
C. int *p=new int;
D. int *p=new int[40](0)
11.下列关于虚基类的描述,错误的是(B)
A. 设置虚基类的目的是为了消除二义性
B. 虚基类的构造函数在非虚基类之后调用
C. 若同一层中包含多个虚基类,这些虚基类的构造函数按它们说明的次序调用
D. 若虚基类由非虚基类派生而来,则仍然先调用基类构造函数,再调用派生类的构造函数
12.已知:print( )函数是一个类的常成员函数,它无返回值,下列表示中,(A)是正确的。
A. void print( ) const;
B. const void print( );
C. void const print( );
D. void print(const);
13.在下面有关静态成员函数的描述中,正确的是(B)。
A. 在静态成员函数中可以使用this指针
B. 在建立对象前,就可以为静态数据成员赋值
C. 静态成员函数在类外定义时,要用static前缀
D. 静态成员函数只能在类外定义
14.在下列关键字中,用于说明类中公有成员的是(A)。
A. public
B. private
C. protected
D. friend
15.以下有关继承的叙述正确的是(B)。
A. 构造函数和析构函数都能被继承
B. 派生类是基类的组合
C. 派生类对象除了能访问自己的成员以外,不能访问基类中的所有成员
D. 基类的公有成员一定能被派生类的对象访问
16.将客观实体的特征与行为作为不可分割的整体进行程序设计的方法称为(C)程序设计。
A. 面向应用
B. 面向过程
C. 面向对象
D. 面向系统
17.构造函数是在(B)时被执行的。
A. 程序编译
B. 创建对象
C. 创建类
D. 程序装入内存
18.静态成员函数仅能访问(A)。
A .静态的数据成员 B. 非静态的成员函数 C. 非静态的数据成员 D. 以上都不对
19.要将类A说明是类B的虚基类,正确的描述是(B)。
A. class virtual B:public A
B. class B:virtual public A
C. virtual class B:public A
D. class B:public A virtual
20.以下基类中的成员函数中表示纯虚函数的是(B)。
A. virtual void vf(int);
B. virtual void vf(int)=0;
C. virtual void vf(int=0);
D. virtual void vf(int){ };
21.如有以下函数模板:B
T min(T a,T b)
{ return a<b?a:b; }
则函数调用 min<int>(100,’b’); 返回的结果是(D)。
A. 100
B. 98
C. b
D. d
22.下列格式控制符中不是定义于iostream.h中的是(C)。
A. endl
B. hex
C. flush
D. setw
23.在类的定义中,用于为对象分配内存空间、对类的数据成员进行初始化并执行其他内部管
理操作的函数是(D)。
A.友元函数
B.虚函数
C.构造函数
D.析构函数
24.下面的类型声明中正确的是( B )。
A. int &a[4];
B. int &*p;
C. int & &q;
D. int I,*pp=&I;
25.下面对类的构造函数的定义正确的是(A)。
A. void X::X( 参数 )
B. X::X( 参数 )
C. int X::X( 参数 )
D. float X::X( 参数 )
26.当一个函数无返回值时,函数的类型应定义为(D)。
A. void
B. 任意
C. int
D. 无
27.已知类A是类B的友元,类B是类C的友元,则(D)
A. 类A一定是类C的友元
B. 类C一定是类A的友元
C. 类C的成员函数可以访问类B的对象的任何成员
D. 类A的成员函数可以访问类B的对象的任何成员
28.执行下面的程序将输出(A)
A.XY B. YX C. X D. Y
#include <iostream.h>
class BASE{
char c;
public:
BASE(char n):c(n){}
~
BASE(){cout<<c;}
};
class DERIVED:public BASE{
char c;
public:
DERIVED(char n):BASE(n+1),c(n){}
~DERIVED(){cout<<c;}
};
int main()
{ DERIVED(‘X’);
return 0;
}
29.能用友元函数重载的运算符是(A)。
A.+ B.= C.[] D.->
30.(A)是析构函数的特征。.
A. 一个类中只能定义一个析构函数
B. 析构函数在对象创建时调用
C. 析构函数的定义只能在类体内
D. 析构函数可以有一个或多个参数
31.C++利用(A)实现面向对象程序设计的封装性。
A. 构造数据类型——类
B. 构造数据类型——枚举
C. 类的派生机制
D. 函数重载与运算符重载
32.在声明类时,下面的说法正确的是(C)。
A. 可以在类的声明中给数据成员赋初值
B. 数据成员的数据类型可以是register
C. private、public、protected可以按任意顺序出现
D. 没有用private、public、protected定义的数据成员是公有成员
33.假设已经有定义const char* const name="chen"; 下面的语句中正确的是( D )。
A. name[3]= 'a';
多态性与虚函数B. name="lin";
C. name=new char[5];
D. cout<<name[3];
34.要将类A说明是类B的虚基类,正确的描述是(B)
A. class virtual B:public A
B. class B:virtual public A
C. virtual class B:public A
D. class B:public A virtual
35.下列关于纯虚函数的描述中,正确的是(D)。
A. 纯虚函数是一种特殊的虚函数,它是个空函数
B. 具有纯虚函数的类称为虚基类
C. 一个基类中说明有纯虚函数,其派生类一定要实现该纯虚函数
D. 具有纯虚函数的类不能创建类对象
36.能用友元函数重载的运算符是(A)。
A.+ B.= C.[] D.->
37.下面函数模板定义中不正确的是(A)
A.template<class T> B.template<class T>
T F(T x){ return T+x; } T F(T x){ return x+x; } C.template<class T> D.template<class T>
T F(T x){ return x*x;} T F(T x){ return x>1; }
二、判断题
1.静态的成员函数没有隐含的this指针,所以它们只能访问静态的数据成员。(√)
2.通过类对象可以访问类中所有的成员。(×)
3.构造函数是可以被派生类继承的。(×)
4.构造函数和析构函数都可以是虚函数。(×)
5.只有类中全部函数都为纯虚函数时,该类才被称为抽象类。(×)
6.对于同一个运算符来说,重载的运算符的优先级比未重载的运算符的优先级高。(×)
7.一个类的友元一定是另一个类的成员函数。(×)
1..当一个函数无返回值时,函数的返回类型应为void。(√)
w和delete运算符可以被重载。(×)
9. 3.在默认参数函数的原型中,所有取缺省值的参数都必须出现在不取缺省值的参数的左
边。(×)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论