《《《《《《《《《《《《《《《《
一、选择题
1.下面各项不属于派生新类范畴的是( )
A.吸收基类的成员
B.改造基类的成员
C.删除基类的成员
D.添加新成员
2.在派生新类的过程中,( )
A.基类的所有成员都被继承
B.只有基类的构造函数不被继承
C.只有基类的析构函数不被继承
D.基类的构造函数和析构函数都不被继承
3.下面不属于类的继承方式的是( )
A.public
B.private
C.operator
D.protected
4.作用域分辨符是指( )
A.?:
B. ::
C.->
D.&&
5.专用多态是指( )
A.重载多态和强制多态
B.强制多态和包含多态
C.包含多态和参数多态
D.参数多态和重载多态
6.通用多态是指( )
A.重载多态和强制多态
B.强制多态和包含多态
C.包含多态和参数多态
D.参数多态和重载多态
7.下面各项中属于不可重载的一组运算符是( )
A.+、—、*、/
B.[ ]、()
C. ::、.、?:、sizeof、.*
D.++、——
8.关于类的构造函数,下面说法不正确的是( )
A.构造函数的作用是在对象被创建时将对象初始化为一个特定的状态
B.构造函数的函数名与类名相同
C.构造函数可以声明为虚函数
D.构造函数在对象被创建时被系统自动调用
9.在C++中,数组类型属于( )
A.基本数据类型
B.自定义数据类型
C.类类型
D.结构体类型
10.若有语句:float array[3][5][7];则数组array的元素个数为( )
A.3
B.5
C.7
D.105
11.关于虚基类,下面说法正确的是( )
A.带有虚函数的类称为虚基类
B.带有纯虚函数的类称为虚基类
C.虚基类不能实例化
D.虚基类可以用来解决二义性问题
12.关于析构函数,下面说法不正确的是( )
A.析构函数用来完成对象被删除前的一些清理工作
B.析构函数可以声明为重载函数
C.析构函数可以声明为虚函数
D.析构函数在对象的生存期即将结束时被系统自动调用
13.关于虚函数,下列说法不正确的是( )
A.虚函数是动态联编的基础
B.虚函数的定义只能出现在类定义中的函数原形声明中
C.类的成员函数均可声明为虚函数
D.虚函数是用virtual关键字声明的非静态成员函数
14.关于抽象类,下列说法不正确的是( )
A.抽象类不能实例化
B.带有虚函数的类称为抽象类
C.带有纯虚函数的类称为抽象类
D.抽象类的作用是为一个类族建立一个公共接口
15.下列对一维数组a的正确定义是( )
A.int n=5,a[n];
B.int a(5);
C.const int n=5;int a[n];
D.int n;cin>>n;int a[n];
16.下列数组定义语句中,不合法的是( )
A.int a[3]={0,1,2,3};
B.int a[]={0,1,2};
C.int a[3]={0,1,2};
D.int a[3]={0};
17.已知int a[10]={0,1,2,3,4,5,6,7,8,9}和*p=a,则不能表示数组a中元素的式子是( )。
A.*a
B.*p
C.a
D.a[p-a]
18.以下不能对二维数组a进行正确初始化的语句是( )。
A.int a[2][3]={0};
B.int a[][3]={{0,1},{0}};
C.int a{2}[3]={{0,1},{2,3},{4,5}};
D.int a[][3]={0,1,2,3,4,5,};
19.已知int a[][3]={{0,1},{2,3,4},{5,6};{7}};则a[2][1]的值是( )。
A.0
B.2
C.6
D.7
20.已知char *a[]={“fortran”,”basic”,”pascal”,”java”,”C++”};则cout<<a[3]的显示结果是()。
A.basic
B.pascal
C.java
D.javac++
21.若用数组名作为调用函数的实参,则传递给形参的是( )。
A.数组存储首地址
B.数组第一个元素的值
C.数组元素的个数
D.数组中全部元素的值
22.判断字符串s1和s2是否相等的正确表达式是( )
A.s1=s2;
B.s1==s2;
C.strcmp(s1,s2)==0;
D.strcpy(s1,s2);
23.下面选项中,不是类的成员函数的为( )
A.构造函数
B.析构函数
C.友元函数
D.拷贝构造函数
24.下列关于类的继承描述中,错误的是( )。
A.派生类可以访问基类的所有数据成员,调用基类的所有成员函数。
B.派生类继承了基类的全部属性。
C.继承描述类的层次关系,派生类可以具有与基类相同的属性和方法。
D.一个基类可以有多个派生类,一个派生类可以有多个基类。
25.当一个派生类公有继承一个基类时,基类中所有公有成员成为派生类的( )
A.public成员
B.private成员
C.protected成员
D.友元
26.不论派生类以何种方式继承基类,都不能使用基类的( )
A.public成员
B.private成员
C.protected成员
D.public和protected成员
27.在一个派生类中重新定义基类的虚函数时,应使( )
A.函数名相同,但参数不同;
B.函数名相同,但函数返回值类型不同;
C.函数名、函数返回值类型、参数个数、参数类型和顺序各不相同。
D.函数名、函数返回值类型、参数个数、参数类型和顺序完全相同。
28.如果把基类的析构函数声明为虚函数,则( )
A.各派生类的析构函数均自动为虚函数;
B.派生类的析构函数与基类析构函数不同名,故不是虚函数;
C.每个派生类的析构函数都必须声明为虚函数;
D.只有基类的析构函数是虚函数。
29.当一个派生类私有继承一个基类时,基类中所有公有成员和保护成员成为派生类的()
A.public成员
B.private成员
C.protected成员
D.友元
30.当一个派生类保护继承一个基类时,基类中所有公有成员和保护成员成为派生类的()
A.public成员
B.private成员
C.protected成员
D.友元
31.派生类的对象可以访问( )。
A.公有继承的基类的公有成员
B.公有继承的基类的保护成员
C.公有继承的基类的私有成员
D.保护继承的基类的公有成员
32.在创建派生类对象时,构造函数的执行顺序是( )
A.对象成员构造函数、基类构造函数、派生类本身的构造函数
B.派生类本身的构造函数、基类构造函数、对象成员构造函数
C.基类构造函数、派生类本身的构造函数、对象成员构造函数
D.基类构造函数、对象成员构造函数、派生类本身的构造函数
33.在C++中,要实现动态联编,必须使用( )调用虚函数。
A.类名
B.对象名
C.基类指针
D.派生类指针
34.下列函数中,可以作为虚函数的是( )。
A.普通函数
B.构造函数
C.成员函数
D.析构函数
35.下面函数原型声明中,声明fun为纯虚函数的是( )。
A.void fun()=0;
B.virtual void fun()=0;
C.virtual void fun();
D.virtual void fun(){ };
36.下列描述中,不正确的是( )。
A.虚函数是没有实现的函数
B.纯虚函数的实现在派生类中定义
C.抽象类是具有纯虚函数的类
D.抽象类指针可以指向不同的派生类对象
37.一个类可以有多个构造函数,这些构造函数之间的关系是( )
A.重载
B.重复
C.拷贝
D.覆盖
38.下列关于构造函数的说法不正确的是( )
A.一个类中有且仅有一个构造函数。
B.构造函数在创建类的对象时被自动执行。
C.构造函数没有函数类型。
D.类的构造函数的函数名必须与该类的类名相同。
39.下列关于析构函数的说法不正确的是( )
A.一个类有且仅有一个析构函数。
B.析构函数可以有形参。
C.析构函数没有函数类型。
D.析构函数在类的对象消失时被自动执行。
40.下列各项不属于类型兼容规则的是( )
A.基类的对象可以赋值给派生类对象
B.派生类的对象可以赋值给基类的对象
C.派生类的对象可以初始化基类的引用
D.派生类对象的地址可以赋值给指向基类的指针
41.下列对于int *pa[5]的描述,正确的是( )。
A.pa是一个指向数组的指针,所指向的数组是5个int型元素
B.pa是一个指向某数组中的第5个元素的指针,该元素是int型变量
C.pa[5]表示某个数组的第5个元素的值
D.pa是一个具有5个元素的指针数组,每个元素是一个int型指针
42.执行下列语句后的输出结果是( )。
int hot=100;
int &rad=hot;
hot+=100;
cout<<rad<<endl;
A.0
B.100
C.200
D.300
43.下列对结构及其变量定义错误的是:( )
A.struct MyStruct{
int num;
char ch;
};
MyStruct my;
B.struct MyStruct{
int num;
char ch;
}my;
C. struct{
int num;
char ch;
}
my;
D.struct{
int num;
char ch;
};
struct my;
44.下列关于指针运算的描述错误的是:( )
A.在一定条件下,两个指针可以相加
B.在一定条件下,两个指针可以进行关系运算
C.在一定条件下,指针可以为空
D.在一定条件下,两个指针可以相互赋值
45.下面关于类的对象的描述中,不正确的是( )
A.一个对象只能属于一个类
B.对象是类的实例
C.一个类只能有一对象
D.类和对象的关系与数据类型和变量的关系类似
47.若有如下声明:
class A{ int a;};
则a是类A的( )
A.公有数据成员
B.公有成员函数
C.私有数据成员
D.私有成员函数
48.在类外定义成员函数时,需要在函数名前加上( )
A.对象名
B.类名
C.作用域运算符
D.类名和作用域运算符
49.一个类的友元函数可以访问该类的( )
A.私有成员
B.公有成员
C.保护成员
D.私有成员、公有成员和保护成员
50.下列关于派生类的描述中,不正确的是( )
A.派生类除了包含它自己的成员外,还包含基类的成员
B.派生类中继承的基类的成员的访问权限在派生类中保持不变
C.派生类只少有一个基类
D.一个派生类可以作为另一个派生类的基类。
》》》》》》》》》》》》》》》》》》