《C++程序设计》(高起专)练习题一
一、单项选择题
1.C++是一种( )的程序设计语言。
A. 面向对象 B. 即可面向过程,又可面向对象
C. 面向过程 D. 面向系统
2.在下面有关析构函数特征的描述中,正确的是( )。
A. 一个类中可以定义多个析构函数 B. 析构函数名与类名完全相同
C. 析构函数不能指定返回类型 D.vbd设计 析构函数可以有一个或多个参数
3.下面对于友元函数描述正确的是( )。
A. 友元函数的实现必须在类的部定义
B. 友元函数是类的成员函数
C. 友元函数破坏了类的封装性和隐藏性
D. 友元函数不能访问类的私有成员
4.下面描述中,表达错误的是( )。
A. 公有继承时基类中的public成员在派生类中仍是public的
B. 公有继承时基类中的private成员在派生类中仍是private的
C. 公有继承时基类中的protected成员在派生类中仍是protected的
D. 保护继承时基类中的public成员在派生类中是private的
5.所谓多态性是指( )
A. 不同的对象调用不同名称的函数 B. 不同的对象调用相同名称的函数
C. 一个对象调用不同名称的函数 D. 一个对象调用不同名称的对象
6.重载赋值操作符时,应声明为( )函数。
A. 友元 B. 虚 C. 成员 D. 多态
7.下列对模板的声明错误的是( )。
A. template <class T1,typename T2> B. template <class T1, T2>
C. template < typename T> D. template <class T1,class T2,class T3>
8.下列类中( )不是输入流类istream的派生类。
A. ifstream B.istrstream C. iostream D. ofstream
9.( )不是构造函数的特征。
A. 构造函数的函数名与类名相同 B 构造函数可以重载
C. 构造函数可以设置缺省参数 D构造函数必须指定类型说明
10.下列语句中错误的是( )。
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. 下列关于虚基类的描述,错误的是( )
A. 设置虚基类的目的是为了消除二义性
B. 虚基类的构造函数在非虚基类之后调用
C. 若同一层中包含多个虚基类,这些虚基类的构造函数按它们说明的次序调用
D. 若虚基类由非虚基类派生而来,则仍然先调用基类构造函数,再调用派生类的构造函数
12.已知:print( )函数是一个类的常成员函数,它无返回值,下列表示中,( )是正确的。
A. void print( ) const; B. const void print( );
C. void const print( ); D. void print(const);
13.在下面有关静态成员函数的描述中,正确的是( )。
A. 在静态成员函数中可以使用this指针
B. 在建立对象前,就可以为静态数据成员赋值
C. 静态成员函数在类外定义时,要用static前缀
D. 静态成员函数只能在类外定义
14.在下列关键字中,用于说明类中公有成员的是( )。
A. public B. private C. protected D. friend
15.以下有关继承的叙述正确的是( )。
A. 构造函数和析构函数都能被继承
B. 派生类是基类的组合
C. 派生类对象除了能访问自己的成员以外,不能访问基类中的所有成员
D. 基类的公有成员一定能被派生类的对象访问
16.下列各种高级语言中,不是面向对象的程序设计语言的是( )。
A. C++ B. Java C. VB D. C
17.下列说法中正确的是( )。
A. 类定义中只能说明函数成员的函数头,不能定义函数体
B. 类中的函数成员可以在类体中定义,也可以在类体之外定义
C. 类中的函数成员在类体之外定义时必须要与类声明在同一文件中
D. 在类体之外定义的函数成员不能操作该类的私有数据成员
18.静态数据成员的初始化必须在( )。
A. 类 B. 类外 C. 构造函数 D. 静态成员函数
19.使用派生类的主要原因是( )。
A. 提高代码的可重用性 B. 提高程序的运行效率
C. 加强类的封装性 D. 实现数据的隐藏
20.编译时的多态性通过使用( )实现。
A. 构造函数 B. 虚函数 C. 重载函数 D. 析构函数
21.下列关于运算符重载的描述中,正确的是( )。
A. 可以改变运算符的目数 B. 可以改变运算符的优先级
C. 可以改变运算符的结合性 D. 可以改变运算符的功能
22.如有以下模板类定义:
Template <class T>
class sum { T a, b;
Public:
sum (T x, T y); }
则在类体外定义构造函数正确的是( )。
A. template <class T>
sum::sum(T x,T y) { a=x; b=y; }
B. template <typename T>
sum::sum(T x,T y) { a=x; b=y; }
C. template <class T>
sum<T>::sum(T x,T y) { a=x; b=y; }
D. sum<T>::sum(T x,T y) { a=x; b=y; }
23.写一个 C++ 文件,要创建一个( )流对象。
A. ifstream B. ofstream C. cin D. cout
24.下面有关重载函数的说法中正确的是( )。
A. 重载函数必须具有不同的返回值类型; B. 重载函数形参个数必须不同;
C. 重载函数必须有不同的形参列表; D. 重载函数名可以不同;
25.一个函数功能不太复杂但要求被频繁调用,应选用( )。
A. 联函数 B. 重载函数 C. 递归函数 D. 嵌套函数
26.关于new运算符的下列描述中,( )是错的。
A. 它可以用来动态创建对象和对象数组
B. 使用它创建的对象和对象数组可以使用运算符delete删除
C. 使用它创建对象时要调用构造函数
D. 使用它创建对象数组时必须指定初始值
27.可以用p.a的形式访问派生类对象p的基类成员a,其中a是( )。
A. 私有继承的公有成员 B. 公有继承的私有成员
C. 公有继承的保护成员 D. 公有继承的公有成员
28.若有定义“int x=17;”,则语句“cout<<oct<<x;”的输出结果是( )。
A. 11 B. 0x11 C. 21 D. 021
29.已知f1和f2是同一类的两个成员函数,但f1不能直接调用f2,这说明( )。
A. f1和f2都是静态函数 B. f1是静态函数,f2不是静态函数
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论