一、 单项选择题
1. 函数重载是指( A )。
A. 两个或两个以上的函数取相同的函数名,但形参的个数或类型不同
B. 两个以上的函数取相同的名字和具有相同的参数个数,但形参的类型可以不同
C. 两个以上的函数名字不同,但形参的个数或类型相同
D. 两个以上的函数取相同的函数名,并且函数的返回类型相同
2. 下列对引用的陈述中不正确的是( C )。
A. 每一个引用都是其所引用对象的别名,因此必须初始化
B. 形式上针对引用的操作实际上作用于它所引用的对象
C. 一旦定义了引用,一切针对其所引用对象的操作只能通过该引用间接进行
D. 不需要单独为引用分配存储空间
3. 关于封装,下列说法中不正确的是( A )。
A. 通过封装,对象的全部属性和操作结合在一起,形成一个整体
B. 通过封装,一个对象的实现细节被尽可能地隐藏起来(不可见)
C. 通过封装,每个对象都成为相对独立的实体
D. 通过封装,对象的属性都是不可见的
4. 假定AA为一个类,a为该类公有的数据成员,px为指向该类对象的一个指针,则访问px所指对象中数据成员a的格式为( C )。
A. px(a) B. px[a] C. px->a D. px.a
5. 假定AA为一个类,int a()为该类的一个成员函数,若该成员函数在类定义体外定义,则函数头为( A )。
A. int AA::a() B. int AA:a()
C. AA::a() D. AA::int a()
6. 类的构造函数是在定义该类的一个( C )时被自动调用执行的。
A. 成员函数 B. 数据成员 C. 对象 D. 友元函数
7.在公有派生情况下,有关派生类对象和基类对象的关系,不正确的叙述是( C )
A.派生类的对象可以赋给基类的对象
B.派生类的对象可以初始化基类的引用
C.派生类的对象可以直接访问基类中的成员
D.派生类的对象的地址可以赋给指向基类的指针
8.对于类定义
class A{
public:
virtual void func1( ){ }
void func2( ){ }
};
class B:public A{
public:
void func1( ){cout<<〃class B func 1〃<<end1;}
virtual void func2( ){cout<<〃class B func 2〃<<end1;}
};
下面正确的叙述是( C ) A、 A::func2( )和B::func1( )都是虚函数
B、A::func2( )和B::func1( )都不是虚函数
C、 B::func1( )是虚函数,而A::func2( )不是虚函数
D、B::func1( )不是虚函数,而A::func2( )是虚函数
9. 对于int *pa[5];的描述,( D )是正确的。
A、 pa是一个指向数组的指针,所指向的数组是5个int型元素;
B、 pa是一个指向某个数组中第5个元素的指针,该元素是int型变量;
C、 pa[5]表示某个数组的第5个元素的值;
D、 pa是一个具有5个元素的指针数组,每个元素是一个int型指针;
10. 下述静态数据成员的特征中,( D )是错误的。
A、 说明静态数据成员时前边要加修饰符static;
B、 静态数据成员要在类体外进行初始化;
C、 引用静态数据成员时,要在静态数据成员名前加<类名>和作用域运算符;
D、 静态数据成员不是所有对象所共用的。
11. 以下关于函数模板叙述正确的是( C )。
A. 函数模板也是一个具体类型的函数
B. 函数模板的类型参数与函数的参数是同一个概念
C. 通过使用不同的类型参数,函数模板可以生成不同类型的函数
D. 用函数模板定义的函数没有类型
12. 下列( B )的调用方式是引用调用。
A. 形参和实参都是变量 B.形参是指针,实参是地址值
C. 形参是引用,实参是变量 D.形参是变量,实参是地址值
13. 为了提高程序的运行速度,可将不太复杂的功能用函数实现,此函数应选择( A )。
A. 内联函数 B.重载函数 C.递归函数 D.函数模板
14. 面向对象方法的多态性是指( C )。
A. 一个类可以派生出多个特殊类
B. 一个对象在不同的运行环境中可以有不同的变体
C. 针对一消息,不同的对象可以以适合自身的方式加以响应
D. 一个对象可以是由多个其他对象组合而成的
15. 在类作用域中能够直接使用该类的( D )成员名进行访问。
A. 私有 B. 公用 C. 保护 D. 任何
16. 假定一个类AB只含有一个整型数据成员a,用户为该类定义的带参构造函数可以为( D )。
A. AB() {} B. AB(): a(0){}
C. AB(int aa=0) {a=aa;} D. AB(int aa) {}
17. 对于任一个类,用户所能定义的构造函数的个数至多为( D )。
A. 0 B. 1 C. 2 D. 任意个
18. 对类对象成员的初始化是通过构造函数中给出的( D )实现的。
A. 函数体 B. 初始化表 C. 参数表 D. 初始化表或函数体
19. 被非静态成员函数访问的类的数据成员( A )。
A. 可以是非静态数据成员或静态数据成员 B. 不可能是类的静态数据成员
C. 只能是类的非静态数据成员 D. 只能是类的静态数据成员
20. 引入友元的主要目的是为了( C )。
A. 增强数据安全性 B. 提高程序的可靠性
C. 提高程序的效率和灵活性 D. 保证类的封装性
21.下面有关重载函数的描述中,正确的是( C )。
A)重载函数必须具有不同的返回值类型 B)重载函数形参个数必须不同
C)重载函数必须具有不同的形参表 D)重载函数名可以不同
22.假定MyCIass为一个类,那么下列的函数说明中,( D )为该类的析构函数。
A)void~MyClass(); B)~MyClass(int n);C)MyClass( ); D)~MyClass( );
23.( A )是以一种完全通用的方法来设计函数或类而不必预先说明将被使用的每个对象的类型。
A)模板 B)类 C)对象 D)函数
24.下面关于静态成员函数的途术中错语的是( B )。
A) 静态成员函数可以有返回值 B) this指针可以指向静态成员函数
C) 静态成员函数可以具有指针参数 D) 静态成员函数可有具有返回值类型
25.定义类模板时要使用关键字( D )。
A)private B) public C)delete D)template
构造函数可以被重载26.下列是重载乘法运算符的函数原型声明,其中错误的是( A )。
A)MyClass operator*(double,double);
B)MyClass operator*(double,MyClass);
C)MyClass operator*(MyClass,double);
D)MyClass operator*(MyClass,MyClass);
27.以下( C )成员函数表示纯虚函数。
A)virtual int fun(int) B)void fun(int)=0
C)virtual void fun()=0 D)virtual void fun(int){ }
28.关于纯虚函数,下列表述中正确的是( A )。
A)纯虚函数的声明总是以"=0"结束 B)含有纯虚函数的类可以定义对象
C)含有纯虚函数的类是抽象类 D)上面都是错误的
29.( C )解决二义性问题。
A)能使用作用域分辨操作符 B) 只能使用虚基类
C) 使用作用域分辨操作符或虚基类 D) 上面都不能
30.实现编译时的多态性要使用( A )。
A)重载函数 B)析构函数 C)构造函数 D)虚函数
31、C++语言是从早期的C语言逐渐发展演变而来的.与C语言相比,它在求解问题方法上进行的最大改进是(B)
A、面向过程 B、面向对象 C、安全性 D、复用性
32、考虑函数原型void test(int a,int b=7,char="*"),下面的函数调用中,属于不合法调用的是(C)
A、test(5); B、test(5,8); C、test(6,"#") D、test(0,0."*");;
33、下面有关重载函数的说法中正确的是(C)
A、重载函数必须具有不同的返回值类型; B、重载函数形参个数必须不同;
C、重载函数必须有不同的形参列表 D、重载函数名可以不同;
34、下列关于构造函数的描述中,错误的是(D)
A、构造函数可以设置默认参数; B、构造函数在定义类对象时自动执行
C、构造函数可以是内联函数; D、构造函数不可以重载
35. 关于对象概念的描述中,(A )是错误的。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论