面向对象技术C++(知识要点)1
课程编号:BWCST3007学籍号:______________________学习中心:______________________姓名:______________________
注意事项:1、本试卷满分100分,考试时间120分钟;
2、请将答案一律写在答题纸上。
一、新单选题(每题2分,共50分。)
1. 下面关于重载函数的说明中正确的是( )。
A、重载函数必须具有不同的返回类型
B、重载函数形参的个数必须不同
C、重载函数必须具有不同的形式参数表
D、重载函数名可以不同
2. 表达式10>5 && 6%3的值是 ( )。
A、-1
B、非零值
C、false
D、true
3. 公有继承的派生类对象可以访问其基类的()。
A、公有成员
B、公有成员及受保护成员
C、受保护成员
D、私有成员
4. 若要将类AClass定义为BClass的友元类,则应该在()类中定义。
A、Aclass
B、BClass
C、二个类中都应定义
D、在两个类之外定义
5. main()函数可以访问派生类的对象中它的哪一类基类成员?( )
A、公有继承的基类的公有成员
B、公有继承的基类的保护成员
C、公有继承的基类的私有成员
D、保护继承的基类的公有成员
6. 在C++程序中,对象之间的相互通信通过( ) ?
A、继承实现
B、调用成员函数实现
C、封装实现
D、函数重载实现
7. 对于任意一个类,析构函数的个数最多为( )。
A、0
B、1
C、2
D、3
8. 重载函数在调用时选择的依据中,()是错误的。
A、参数个数
B、参数类型
C、函数名字
D、函数的类型
9. 在 C++ 中实现封装是借助于()。
A、枚举
B、类
C、数组
D、函数
10. 下列关于break语句的叙述不正确的是( )。
A、break语句可用于循环体中,它将使执行流程跳出本层循环体;
B、break语句可用于switch语句中,它将使执行流程跳出当前的switch语句;
C、break语句可用于if语句中,它将使执行流程跳出当前if语句;
D、break语句在一层循环体中可以出现多次。
11. 若一个类的成员函数前用static关键字修饰,则该成员函数()。
A、可以被声明为const析构函数的定义
B、没有this指针
C、可以访问该类的所有成员
D、只能用对象名来调用
12. 在int a[][3]={{1},{3,2},{4,5,7},{9}}中,a[2][2]的值是()。
A、3
B、2
C、7
D、4
13. 执行下列语句后的输出结果是()。
int cool=200;
int &rad=cool;
cool+=100;
cout<<rad<<endl;
A、0
B、100
C、200
D、300
14. 关于多继承二义性的描述,( )是错误的。
A、派生类的多个基类中存在同名成员时,派生类对这个成员访问可能出现二义性
B、如果一个派生类是从具有两个同名间接基类的两个直接基类派生来的,则派生类对该公共基类的访问可能出现二义性
C、解决二义性最常用的方法是使用作用域运算符对成员进行限定
D、派生类和它的基类中出现同名函数时,将出现二义性
15. 对以下说明语句的正确理解是()。
int a[10]={6,7,9,9,10};
A、将5个初值依次赋给a[1]至a[5]
B、将5个初值依次赋给a[0]至a[4]
C、将5个初值依次赋给a[6]至a[10]
D、因为数组长度与数组个数不相同,所以此语句不正确
16. 在派生类中重新定义虚函数时必须在()方面与基类保持一致。
A、参数个数
B、参数值
C、参数名字
D、函数内容
17. 下列关于抽象类说法正确的是:()。
A、抽象类处于继承类层次结构的下层
B、抽象类刻画了一组子类的操作通用接口
C、抽象类可以作为类直接使用
D、抽象类可以直接定义对象
18. 编译时多态性通过使用()获得。
A、继承
B、虚函数
C、重载函数
D、构造函数
19. 动态内存分配的主要目的是()。
A、使程序按动态方式运行
B、正确合理的使用内存
C、提高程序的运行速度
D、提高程序的可读性
20. 若X是一个bool型变量,则X && 5<3的值()。
A、为true
B、为false
C、与X的值相同
D、与X的值相反
21. 如果a=1,b=2,c=3,d=4,则条件表达式“a>b?a:c<d?c:d ”的值为()。
A、3
B、2
C、1
D、4
22. 下列关于纯虚函数和抽象类的描述中,不正确的是()。
A、纯虚函数是一个没有具体实现的虚函数
B、抽象类是包括纯虚函数的类
C、抽象类只能作为基类,其纯虚函数的实现在派生类中给出
D、可以定义一个抽象类的对象
23. 若:int a[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抽象类定如下:
class Shape {
public:
Shape(){}
~Shape(){}
virtual float GetPerimValue()=0; }
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论