c:
d”的值为()。
A、3
B、2
C、1
D、4
22.下列关于纯虚函数和抽象类的描述中,不正确的是()。
A、纯虚函数是一个没有具体实现的虚函数
B、抽象类是包括纯虚函数的类
C、抽象类只能作为基类,其纯虚函数的实现在派生类中给出
D、可以定义一个抽象类的对象
23.若:
inta[4][5]={0};则下面正确的叙述是()。
A、只有元素a[0][0]可得到初值0
B、此说明语句不正确
C、数组a中各元素都可得到初值,但其值不一定为0
D、数组a中每个元素均可得到初值0
24.在C++语言中,能代表逻辑值“真”的是()。
A、0
B、大于0的数或非0整数
C、非0整数
D、非0的数
25.若++重载为友元运算符,则C++编译器对表达式obj++的解释为()。
A、operator++(obj)
B、operator++(obj,0)
C、obj.operator++()
D、obj.operator++(0)()
二、是非题(正确的填写“T”,错误的填写“F”。
每题1分,共20分。
)
1.函数参数个数和类型都相同,只是返回值类型不同,这不是重载函数。
2.一般类中包含有数据成员和成员函数。
3.引用和指针都可作函数参数。
4.对象数组的下标从1开始。
5.指向类成员指针与指向对象的指针是不同的。
6.运算符重载是为了改变语法结构。
7.虚函数是一种virtual说明的成员函数。
8.构造函数可以重载。
9.对于对象数组只能赋初值而不能再赋值。
10.类中被说明为protected和private的成员只能被其派生类的成员函数访问,不能被其它的函数访问。
11.虚函数是为实现某种功能而假设的函数,派生类的虚函数定义影响其基类,而基类的虚函数定义不影响其派生类。
12.类中成员有三种访问数据:
公有、私有和保护。
13.使用new运算符创建的对象或对象数组可以使用运算符delete删除。
14.运算符重载是为了保持原有的结合性。
15.子对象是类的一种数据成员,它是另一个类的对象。
16.new运算符可以用来动态创建对象和对象数组。
17.子对象是类的一种数据成员,对子对象的初始化要包含在该类的构造函数中。
18.常成员包含常数据成员和常成员函数两种,常数据成员必须是公有的。
19.多继承情况下,派生类的构造函数的执行顺序取决于定义派生时所指定的各基类的顺序。
20.友元类被说明在一个类中,它与访问权限无关。
三、问答题(每题15分,共30分。
)
1.读程序,回答问题
(1)下面循环语句中内层循环体S语句的执行总次数?
并解释原因。
(2)假定x=5,y=6,则执行表达式x--*--y的值是多少?
并解释原因。
如果是执行--x*y--呢?
2.已定义一个Shape抽象类,在此基础上派生出矩形Rectangle和圆形Circle类,二者都有GetPerimValue()函数计算对象的周长,并编写测试main()函数。
Shape抽象类定如下:
classShape{
public:
Shape(){}
~Shape(){}
virtualfloatGetPerimValue()=0;}
面向对象技术C++(知识要点)2
课程编号:
BWCST3007
学籍号:
______________________
学习中心:
______________________
姓名:
______________________
注意事项:
1、本试卷满分100分,考试时间120分钟;
2、请将答案一律写在答题纸上。
一、新单选题(每题2分,共50分。
)
1.重载函数在调用时选择的依据中,()是错误的。
A、参数个数
B、参数类型
C、函数名字
D、函数的类型
2.以下标识符中,不能作为合法的C++用户定义标识符的是()。
A、k3_b3
B、void
C、_153
D、number
3.下列关于虚基类的描述中,错误的是()。
A、使用虚基类可以消除由多继承产生的二义性
B、声明″classC:
virtualpublicA″说明类C为虚基类
C、构造派生类对象时,虚基类的构造函数只被调用一次
D、建立派生类对象时,首先凋用虚基类的构造函数
4.若要将类AClass定义为BClass的友元类,则应该在()类中定义。
A、Aclass
B、BClass
C、二个类中都应定义
D、在两个类之外定义
5.main()函数可以访问派生类的对象中它的哪一类基类成员?
()
A、公有继承的基类的公有成员
B、公有继承的基类的保护成员
C、公有继承的基类的私有成员
D、保护继承的基类的公有成员
6.类的析构函数的作用是()。
A、作为类的一般成员函数
B、类的初始化
C、对象的初始化
D、对象的删除
7.下列描述中,抽象类的特征有()。
A、可以说明虚函数
B、可以构造函数重载
C、可以定义友员函数
D、不能说明其对象
8.下列符号中不属于c++关键字的是()。
A、friend
B、namespace
C、continue
D、byte
9.下列不表示虚继承的是()。
A、publicvirtual
B、virtualpublic
C、public
D、virtual
10.下列不是描述类的成员函数的是()。
A、构造函数
B、析构函数
C、友元函数
D、拷贝构造函数
11.函数重载的目的是()。
A、实现共享
B、使用方便,提高可读性
C、提高速度
D、减少空间
12.以下定义数组中错误的是()。
A、inta[10];
B、inta[2][20];
C、inta[20][];
D、inta[20];
13.在派生类中重新定义虚函数时必须在()方面与基类保持一致。
A、参数个数
B、参数值
C、参数名字
D、函数内容
14.下列关于抽象类说法正确的是:
()。
A、抽象类处于继承类层次结构的下层
B、抽象类刻画了一组子类的操作通用接口
C、抽象类可以作为类直接使用
D、抽象类可以直接定义对象
15.下面函数模板定义中不正确的是()。
A、template
FF(Fy){
returnF+y;
}
B、template
FF(Fy){
returny+y;
}
C、template
TF(Ty){
returny*y;
}
D、template
TF(Ty){
returny>1;
}
16.若++重载为友元运算符,则C++编译器对表达式obj++的解释为()。
A、operator++(obj)
B、operator++(obj,0)
C、obj.operator++()
D、obj.operator++(0)()
17.若:
inta[4][5]={0};则下面正确的叙述是()。
A、只有元素a[0][0]可得到初值0
B、此说明语句不正确
C、数组a中各元素都可得到初值,但其值不一定为0
D、数组a中每个元素均可得到初值0
18.在inta[][3]={{1},{3,2},{4,5,7},{9}}中,a[2][2]的值是()。
A、3
B、2
C、7
D、4
19.在C++语言中,能代表逻辑值“真”的是()。
A、0
B、大于0的数或非0整数
C、非0整数
D、非0的数
20.动态内存分配的主要目的是()。
A、使程序按动态方式运行
B、正确合理的使用内存
C、提高程序的运行速度
D、提高程序的可读性
21.若有说明inta[3][4];,则a数组元素的非法引用是()。
A、a[0][1*2]
B、a[1][3]
C、a[4-2][0]
D、a[0][4]
22.关于类定义格式的描述中,()是错误的。
A、一般类的定义格式分为说明部分和实现部分
B、成员函数都应是公有的,数据成员都应是私有的
C、构造函数可以重载
D、一般类中包含有数据成员和成员函数
23.执行语句k=30;j=k++;后k和j的值分别为()。
A、k=30,j=30
B、k=30,j=31
C、k=31,j=30
D、k=31,j=31
24.可以用p.b的形式访问派生类对象p的基类成员b,其中b是( )。
A、私有继承的公有成员
B、公有继承的私有成员
C、公有继承的保护成员
D、公有继承的公有成员
25.编译时多态性通过使用()获得。
A、继承
B、虚函数
C、重载函数
D、构造函数
二、是非题(正确的填写“T”,错误的填写“F”。
每题1分,共20分。
)
1.函数的参数个数和类型都相同,只是返回值不同,这不是重载函数。
2.类中所提供的成员函数可以直接访问私有成员。
3.一个类中只能定义一个析构函数。
4.运算符重载是为了保持原有的结合性。
5.C++语言支持封装性和继承性,不支持多态性。
6.假定用户没有给一个名为AA的类定义构造函数,则系统为其定义的默认构造函数形式为AA(){}。
7.对象数组的下标从1开始。
8.对于对象数组只能赋初值而不能再赋值。
9.只要基类的析构函数被说明为虚函数,则派生类的析构函数,无论是否使用virtual进行说明,都自动地成为虚构函数。
10.?
号不能在C++中重载。
11.私有继承中,基类中所有成员对派生类的对象都是不可见的。
12.说明静态数据成员时前边要加修饰符static。
13.对象数组的每个元素都是相同类的对象。
14.引用和指针都可作函数参数。
15.对象数组的元素可以是不同类的对象。
16.构造函数的函数名与类名相同。
17.new运算符可以用来动态创建对象和对象数组。
18.指向类成员指针与指向对象的指针是不同的。
19.inti,*p=&i;上述语句是正确的。
20.友元函数是类的成员函数。
三、问答题(每题15分,共30分。
)
1.读程序,写出程序运行的结果,并回答问题。
#include
2.用引用类型变量作为函数参数,编写对三个变量进行按升序排序的函数,在主函数中输入三个变量的值,输出排序后三个变量的值。
面向对象技术C++(知识要点)3
课程编号:
BWCST3007
学籍号:
______________________
学习中心:
______________________
姓名:
______________________
注意事项:
1、本试卷满分100分,考试时间120分钟;
2、请将答案一律写在答题纸上。
一、新单选题(每题2分,共50分。
)
1.重载函数在调用时选择的依据中,()是错误的。
A、参数个数
B、参数类型
C、函数名字
D、函数的类型
2.下面选项中不属于面向对象程序设计特征的是()。
A、继承性
B、多态性
C、类比性
D、封装性
3.以下一种类中,()不能建立对象。
A、抽象类
B、派生类
C、虚基类
D、基类
4.若一个类的成员函数前用static关键字修饰,则该成员函数()。
A、可以被声明为const
B、没有this指针
C、可以访问该类的所有成员
D、只能用对象名来调用
5.用来说明类中保护成员的关键字是()。
A、public
B、private
C、protected
D、friend
6.下列关于构造函数的描述中,错误的是()。
A、构造函数可以设置默认参数;
B、构造函数在声明对象时自动执行;
C、构造函数可以对静态数据成员进行初始化;
D、构造函数可以重载;
7.()不是属于面向对象程序设计的特性。
A、抽象性
B、数据相关性
C、多态性
D、继承性
8.下列对派生类的描述中,()是错误的。
A、一个派生类可以作为另一个派生类的基类
B、派生类至少应有一个基类
C、基类中成员的访问权限被派生类继承后都不改变
D、派生类的成员除了自己定义的成员外,还包含了它的基类成员
9.main()函数可以访问派生类的对象中它的哪一类基类成员?
()
A、公有继承的基类的公有成员
B、公有继承的基类的保护成员
C、公有继承的基类的私有成员
D、保护继承的基类的公有成员
10.若要将类AClass定义为BClass的友元类,则应该在()类中定义。
A、Aclass
B、BClass
C、二个类中都应定义
D、在两个类之外定义
11.类的析构函数是在()调用的。
A、类创建时
B、创建对象时
C、删除对象时
D、不自动调用
12.假定一个类的构造函数为F(intaa,intbb){a=aa++;b=a*bb++;},则执行
FX(5,5);语句后,X.a和X.b的值分别为()。
A、4和20
B、5和30
C、5和25
D、5和16
13.已知枚举类型声明语句为:
enumCOLOR{WHITE,YELLOW,GREEN=5,RED,BLACK=9};
则下列说法中错误的是()。
A、枚举常量YELLOW的值为1
B、枚举常量RED的值为6
C、枚举常量BLACK的值为9
D、枚举常量WHITE的值为1
14.以下定义数组中错误的是()。
A、inta[10];
B、inta[2][20];
C、inta[20][];
D、inta[20];
15.友元在访问类的对象的成员时()。
A、直接使用类的成员名
B、使用this指针指向成员名
C、使用“类名:
:
成员名”的形式
D、使用“对象名.成员名”的形式
16.在一个类,可以对一个操作符进行()种重载。
A、1
B、2种以下
C、3种以下
D、多种
17.下面的函数声明中,()是”voidDE(inta,intb);”的重载函数。
A、intDE(inta,intb)
B、voidDE(inta,charb)
C、floatDE(inta,intb,intc=0)
D、voidDE(inta,intb=0)
18.若有说明inta[3][4];,则a数组元素的非法引用是()。
A、a[0][1*2]
B、a[1][3]
C、a[4-2][0]
D、a[0][4]
19.派生类中对基类的虚函数进行替换时,派生类中说明的虚函数与基类中的被替换的虚函数之间不要求满足的是()。
A、与基类的虚函数具有不相同的参数个数
B、其参数的类型与基类的虚函数的对应参数类型相同
C、派生类虚函数所返回的指针或引用的基类型是基类中被替换的虚函数所返回的指针或引用的基类的子类型
D、其返回值或者与基类的虚函数相同,或者都返回指针或引用
20.关于类定义格式的描述中,()是错误的。
A、一般类的定义格式分为说明部分和实现部分
B、成员函数都应是公有的,数据成员都应是私有的
C、构造函数可以重载
D、一般类中包含有数据成员和成员函数
21.下列语句中错误的是():
A、constinta;
B、constinta=1;
C、constint*point=0;
D、constint*point=newint(5);
22.设置虚基类的目的是()。
A、消除两义性
B、简化程序
C、提高运行效率
D、减少目标代码
23.下面的语句中能将类B定义为类A的友元类的是()。
A、classA{friendclassB}
B、friendclassB
C、classA{classB}
D、classB{friendclassA}
24.动态内存分配的主要目的是()。
A、使程序按动态方式运行
B、正确合理的使用内存
C、提高程序的运行速度
D、提高程序的可读性
25.关于多继承二义性的描述,()是错误的。
A、派生类的多个基类中存在同名成员时,派生类对这个成员访问可能出现二义性
B、如果一个派生类是从具有两个同名间接基类的两个直接基类派生来的,则派生类对该公共基类的访问可能出现二义性
C、解决二义性最常用的方法是使用作用域运算符对成员进行限定
D、派生类和它的基类中出现同名函数时,将出现二义性
二、是非题(正确的填写“T”,错误的填写“F”。
每题1分,共20分。
)
1.对象数组的元素可以是不同类的对象。
2.一个类中只能定义一个析构函数。
3.带有纯虚函数的类是抽象类。
4.拷贝构造函数用它所在类的对象作为参数。
5.delete运算符必须用于new返回的指针。
6.子对象是类的一种数据成员,一个类中只能含有一个子对象作其成员。
7.在一个类,可以对一个操作符进行多种重载。
8.若要实例化一个含有引用型数据成员的类,那么只能使用构造函数初始化列表来初始化该数据成员。
9.构造函数可以重载。
10.对象数组的数组名是一个常量指针。
11.C++中的所有函数调用都是传值调用。
12.使用new运算符创建的对象或对象数组可以使用运算符delete删除。
13.成员函数都应是公有的、数据成员都应是私有的。
14.说明静态数据成员时前边要加修饰符static。
15.C++中,数组下标从1开始。
16.虚函数是为实现某种功能而假设的函数,派生类的虚函数定义影响其基类,而基类的虚函数定义不影响其派生类。
17.C++语言支持封装性和继承性,不支持多态性。
18.用于输出表达式值的标准输出流对象是cin,用于从键盘上为变量输入值的标准输入流对象是cout。
19.inti,*p=&i;上述语句是正确的。
20.多继承情况下,派