面向对象程序设计(C++)复习题
一 选择题(共 45题)
1.对类的构造函数和析构函数描述正确的是( )。
A. 构造函数可以重载,析构函数不能重载 √
B. 构造函数不能重载,析构函数可以重载
C. 构造函数可以重载,析构函数也可以重载
D. 构造函数不能重载,析构函数也不能重载
2.继承具有( ),即当基类本身也是某一个类派生类时,底层的派生类也会自动继承间接基类的成员。
A)规律性 B.传递性√ C.重复性 D.多样性
3.假设OneClass为一个类,则该类的复制初始化构造函数的声明语句为( )。
A.OneClass(OneClass p); B. OneClass& (OneClass p );
C. OneClass(OneClass & p); √ D. OneClass (OneClass * p);
4.对于结构中定义的成员,其默认的访问权限为( )。
A.public B. protected C.private D. static
5.下面对静态数据成员的描述中,不正确的是( )。
A.静态数据成员可以在类体内进行初始化√
B.静态数据成员不可以在类体内进行初始化
C.静态数据成员能受private控制符的作用
D.静态数据成员调用前必须初始
6. C++中的类有两种用法:一种是类的实例化,即生成类对象,并参与系统的运行;另一种是通过( )派生了新的类。
A.复用 B.继承 √ C.封装 D.引用
7. 假定AA为一个类,a为该类公有的数据成员,x为该类的一个对象,则访问x对象中数据成员a的格式为( )。
A. x(a) B. x[a] C. x->a D. x.a √
9. 对于一个类的构造函数,其函数名与类名( )。
A. 完全相同 √ B. 基本相同 C. 不相同 D. 无关系
10. 一个类的构造函数通常被定义为该类的( )成员。
A. 公有 √ B. 保护 C. 私有 D. 友元
11. 一个类的析构函数通常被定义为该类的( )成员。
A. 私有 B. 保护 C. 公有 √ D. 友元
12. 一个类的静态数据成员所表示属性 ( )。
A. 是类的或对象的属性 B. 只是对象的属性
C. 只是类的属性 √ D. 类和友元的属性
13.类的析构函数的作用是( )。
A.一般成员函数 B.类的初始化 C.对象初始化 D.删除对象之前的善后工作√
14.下列对基类和派生类关系的描述中,错误的是( )。
A.派生类是基类的具体化 B.派生类是基类的子集√
C.派生类是基类定义的延续 D.派生类是基类的组合
15.下列对派生类的描述中,错误的是( )。
A.一个派生类可以作为另一个派生类的基类 B.派生类至少有一个基类
C.派生类的缺省继承方式是private D.派生类只继承了基类的公有成员和保护成员√
16.下列对继承的描述中,错误的是( )。
A.析构函数不能被继承
B.派生类也是基类的组合
C.派生类的成员除了它自己的成员外,还包含了它的基类的成员
D.派生类中继承的基类成员的访问权限到派生类保持不变√
17.派生类的对象对它的基类成员中( )是可以访问的。
A.公有继承的公有成员√ B.公有继承的私有成员
C.公有继承的保护成员 D.私有继承的公有成员
18.下列说法错误的是( )。
A.公有继承的基类中的public成员在派生类中仍是public的
B.公有继承的基类中的private成员在派生类中仍是private的√
C.私有继承的基类中的public成员在派生类中仍是private的
D.保护继承的基类中的public成员在派生类中仍是protected的
19.下面叙述错误的是( )。
A.基类的protected成员在派生类中仍然是protected√
B.基类的protected成员在public派生类中仍然是protected的
C.基类的protected成员在private派生类中是private的
D.基类的protected成员不能被派生类的对象访问
20.设置虚基类的声明中,正确的是( )。
A.简化程序 B.消除二义性√ C.提高运行效率 D.减少目标代码
21.关于虚函数的描述中,正确的是()。
A.虚函数是一个静态成员函数
B.虚函数是一个非成员函数
C.虚函数即可以在函数说明定义,也可以在函数实现时定义
D.派生类的虚函数与基类中对应的虚函数具有相同的参数个数和类型√
22.下列描述中,( )是抽象类的特征。
A.可以说明虚函数 B.可以进行构造函数重载
C.可以定义友元函数 D.不能说明其对象√
23. 静态数据成员的初始化是在( )中进行的。
A. 构造函数 B. 任何成员函数
C. 所属类 D. 全局区√
24. 当将一个类A或函数f()说明为另一个类B的友元后,类A或函数f()能够直接访问类B的( )。
A. 只能是公有成员 B. 只能是保护成员
C. 只能是除私有成员之外的任何成员 D. 具有任何权限的成员√
25. 在重载一个运算符时,其参数表中没有任何参数,这表明该运算符是( )。
A. 作为友元函数重载的1元运算符 B. 作为成员函数重载的1元运算符√
C. 作为友元函数重载的2元运算符 D. 作为成员函数重载的2元运算符
26. 关于运算符重载,下列说法正确的是( )。
A. 重载时,运算符的优先级可以改变。
B. 重载时,运算符的结合性可以改变。
C. 重载时,运算符的功能可以改变。√
D. 重载时,运算符的操作数个数可以改变。 27. 从一个基类派生出的各个类的对象之间( )。
A. 共享所有数据成员,每个对象还包含基类的所有属性
B. 共享部分数据成员,每个对象还包含基类的所有属性
C. 不共享任何数据成员,但每个对象还包含基类的所有属性
D. 共享部分数据成员和函数成员√
28. C++的继承性允许派生类继承基类的( )。
A. 部分特性,并允许增加新的特性或重定义基类的特性√
B. 部分特性,但不允许增加新的特性或重定义基类的特性
C. 所有特性,并允许增加新的特性或重定义基类的特性
D. 所有特性,但不允许增加新的特性或重定义基类的特性
29. 派生类的成员函数可以直接访问基类的( )成员。
A. 所有 B. 公有和保护 √ C. 保护和私有 D. 私有
30. 当派生类中有和基类一样名字的成员时,一般来说,( )。
A. 将产生二义性 B. 派生类的同名成员将覆盖基类的成员√
C. 是不能允许的 D. 基类的同名成员将覆盖派生类的成员
31.关于纯虚函数和抽象类的描述中,错误的是( )。
A.纯虚函数是一种特殊的虚函数,它没有具体的实现
B.抽象类是指具体纯虚函数的类
C.一个基类中说明有纯虚函数,该基类派生类一定不再是抽象类√
D.抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出
32.如果一个类至少有一个纯虚函数,那么就称该类为( )。
A.抽象类√ B.虚函数 C.派生类 D.以上都不对
33.要实现动态联编,必须通过( )调用虚函数。
A.对象指针 √ B.成员名限定 C.对象名 D.派生类名
34.以下( )成员函数表示虚函数。
A.virtual int vf(int); B.void vf(int)=0;
C.virtual void vf()=0; D.virtual void vf(int) { }; √
40.下面描述中,正确的是( )。
A.virtual可以用来声明虚函数√
B.含有纯虚函数的类是不可以用来创建对象的,因为它是虚基类
C.即使基类的构造函数没有参数,派生类也必须建立构造函数
D.静态数据成员可以通过成员初始化列表来初始化
35. 在成员函数中进行双目运算符重载时,其参数表中应带有( )个参数。
A. 0 B. 1 √ C. 2 D. 3
36. 在重载一运算符时,若运算符函数的形参表中没有参数,则不可能的情况是( )。
A. 该运算符是一个单目运算符。 B. 该运算符函数有一个隐含的参数this。
C. 该运算符函数是类的成员函数。 D. 该运算符函数是类的友元函数。√
37. 下面对于友元函数描述正确的是( )。
A.友元函数的实现必须在类的内部定义
B.友元函数是类的成员
C.友元函数破坏了类的封装性和隐藏性√
D.友元函数不能访问类的私有成员
38.为了使类中的某个成员不能被类的对象通过成员操作符访问,则不能把该当成员的访问权限定义为( )。 A.public √ B.protected C.private D.ststic
39.下面对静态数据成员的描述中,正确的是( )。
A.静态数据成员是类的所有对象共享的数据√
B.类的每一个对象都有自己的静态数据成员
C.类的不同对象有不同的静态数据成员值
D.静态数据成员不能通过类的对象调用
40.C++类体系中,不能被派生类继承的有( )。
A.构造函数 √ B.虚函数 C.静态成员函数 D.赋值操作函数
41下列虚基类的声明中,正确的是( )。
A.class virtual B:public A B.virtual class B:public A
面向对象程序设计作业(带答案)
人工智能学院
面
向
对
象
程
序
设
计
作
业
Java语言基础
年级专业 2019级软件工程专业 学号 姓名 成绩
一、 选择题
1. 下列标识符中,正确的是(C)。
A.class B. 123_rr C. _lei D. test&12
2. 下列( D )的选项可以正确表示八进制8。
A.0x8 B. 0x10 C.08 D. 010
3. 以下哪个是十进制数17对应的十六进制正确表示?( D )
A. 017 B. x11 C. 0x17 D. 0X11
4.在Java中,不属于整数类型的是( A )。
A.double B. long C. int D. byte
5.在Java中,关于标识符的说明,不正确的是(D )。
A.严格区分大小写;
B.长度不限;
C.不能用关键字和保留字作为标识符;
D.可以包含空格
6.给出下面代码的输出结果。( D )
public class ByteAdd {
public static void main(String args[ ]){
byte a=10;
byte b=100;
byte c;
c=a+b;
System.out.println(a+"+"+b+"="+c);} }
A.输出零
B.输出 10+100=110
C. 编译时正确,运行时将产生错误;
D.编译时将产生错误;
二、 程序阅读题
1. 对于以下程序,运行“java Abs”,将得到什么打印结果?
public class Abs{
static int a=0x11;
static int b=0011;
static int c='\u0011'; static int d=011;
public static void main(String args[]){
面向对象程序设计复习题
一、单项选择题。
1引入内联函数的主要目的是
A)缩短程序代码,少占用内存空间
B.既可以保证程序的可读性,又能提高程序的运行效率
C)提高程序的执行速度
D)使程序的结构比较清晰
2重载函数是
A)以函数参数来区分,而不用函数的返回值来区分不同的函数
B.以函数的返回值来区分,而不用函数参数来区分不同的函数
C)参数表完全相同而返回值类型不同的两个或多个同名函数
D)参数表和返回值类型都必须是不同的两个或多个同名函数
3有函数原型 void fun2 (int *), 下面选项中,正确的调用是
A) double x = 2.17。 fun2 (&x)。 C) int a = 15。 fun2 (a*3.14)。
B) int b = 100。 fun2 (& b)。 D) fun2 (256)。
4在C++中,要实现动态联编,必须使用( )调用虚函数。
A) 类名 B) 派生类指针 C)对象名 D) 基类指针
5 在公有派生情况下,有关派生类对象和基类对象的关系,下列叙述不正确的是
A)派生类的对象可以直接访问基类中的所有成员
B)派生类的对象可以初始化基类的引用
C)派生类的对象可以赋给基类的对象
D) 派生类的对象的地址可以赋给指向基类的指针
6设置虚基类的目的是
A)消除两义性 B) 简化程序
C)提高运行效率 D)减少目标代码
7关于构造函数,以下说法错误的是
A) 构造函数的作用是在对象被创建时使用特定的值构造对象,或者说将对象
初始化为一个特定的状态。在对象创建时由系统自动调用。
B) 基类的构造函数可以被派生类所继承。
C) 如果程序中未声明,则系统自动产生出一个缺省形式的构造函数。
D) 允许为内联函数、重载函数、带缺省形参值的函数。
8下列关于C++函数的说明中,正确的是
A)内联函数就是定义在另一个函数体内部的函数
B)函数体的最后一条语句必须是return语句
面向对象程序设计复习题文档
面向对象程序设计考试题型:
1) 选择题10题,共20分
2) 填空题10题,共20分
3) 程序阅读题3题,共15分
4) 程序填空题,10空,共20分
5) 简答题3题,共15分
6) 编程题1题,共10分
一、 选择题:
1.属于C#语言的关键字( )。
A. abstract B. camel C. Salary D. Employ
答案:A
2.C#语言中,值类型包括:基本值类型、结构类型和( )。
A.小数类型 B.整数类型 C.类类型 D.枚举类型
答案:D
3. 假定一个10行20列的二维整型数组,下列哪个定义语句是正确的( )。
A. int[]arr = new int[10,20]
B. int[]arr = int new[10,20]
C. int[,]arr = new int[10,20]
D. int[,]arr = new int[20;10]
答案:C
4.在类作用域中能够通过直接使用该类的( )成员名进行访问。
A. 私有 B. 公用 C. 保护 D. 任何
答案:D
5.小数类型和浮点类型都可以表示小数,正确说法:( )
A. 两者没有任何区别
B. 小数类型比浮点类型取值范围大
C.小数类型比浮点类型精度高
D. 小数类型比浮点类型精度低
答案:C
6.能作为C#程序的基本单位是( )。
A. 字符 B. 语句 C. 函数 D. 源程序文件
答案:B
7. 可用作C#程序用户标识符的一组标识符是( )。
A. void define +WORD B. a3_b3 _123 YN
C. for -abc Case D. 2a DO sizeof
C#面向对象程序设计复习试题
1 1.面向对象分析的第一步是 A
。
A.确定问题域 B.确定附加的系统约束 C.定义服务 D.定义类和对象
2.在C#语言中引进了类的概念。类的定义包括类名,类的说明和类的实现, D 是类的外部接口。
A.类的引用 B. 类的实现 C.类的说明 D.类的标识
3. A 是类的内部表示。
A.类的说明 B.类的实现 C.类的标识 D.类的构造
4.有了 B 可以隐藏类对象内部实现的复杂细节,有效地保护内部所有数据不受外部破坏。
A.多态性 B.封装性 C.兼容性 D.继承性
5. D 增强了类的共享机制,实现了软件的可重用性,简化系统的开发工作。
A.多态性 B.封装性 C.兼容性 D.继承性
6. A 可实现函数重载和运算符重载。
A.多态性 B.封装性 C.兼容性 D.继承性
7.在面向对象程序设计中,常常将接口的定义与接口的实现相分离,可定义不同的类实现相同的接口。在程序运行过程中,对该接口的调用可根据实际的对象类型调用其相应的实现。为达到上述目的,面向对象语言须提供 B 机制。
A.继承和过载 B.抽象类 C.继承和重置 D.对象自身应用
8.下面关于面向对象的描述正确的是 A 。
A.针对接口编程,而不是针对实现编程
B.针对实现编程,而不是针对接口编程
C.接口与实现不可分割 D.优先使用继承而非组合
9.面向对象程序设计语言为 D 提供支持。
A.面向对象用例设计阶段 B.面向对象分析阶段
C.面向对象需求分析阶段 D.面向对象实现阶段
10.在面向对象方法中,对象是类的实例。表示对象相关特征的数据称为对象的 C 。
A.数据变量 B.数据结构 C.属性 D.定义
面向对象的程序设计语言――C++(第二版)-习题参考答案
面向对象的程序设计语言――C++(第二版)-习题参考答案
课后习题答案以及代码
习题参考答案
第1章
1.填空题 C++语言概述
(1)函数说明,函数体
(2)声明区,主程序区,函数定义区
(3)多态性
(4)namespace,using
(5)std
(6)cin,
(7)//
(8)对数据的操作
2.判断题
(1)对 (2)错 (3)错 (4)错 (5)错
3.改错题
(1)没有函数体,应改为
void main() {}; (2)语句没有分号,应改为
using namespace myspace;
(3)cout和操作符共同完成输出的功能,应改为
cout“ Input your name:";
(4)应改为
#include iostream.h
4.简答题
5.编程题 (略) (略)
第2章
1. 选择题 基本数据类型、运算符与表达式
(1)B (2)D (3)B (4)D (5)B
课后习题答案以及代码
2.简答题
(1)(a)、(c)(e)、(f)、(g)、(h)、(i)
(2)(a)、(g)、(i)、(j)
(3)
(a)5.5
(b)0
(c)20
(d)0,0
(e)1 (f)1,2
(g)3
(h)-40
(i)2
(j)3
(k)s1='0's1='9'
(l)N!=0
3.读程序写结果
(1)0,15
(2)(1、1、1),(-1、-1、-1)
(3)
(a)a*a+2*a*b+b*b
聊城大学计算机学院面向对象的程序设计(c++)练习题(第三周)(构造函数和析构函数)
聊城大学 计算机学院 面向对象的程序设计 第三次作业
一、单选题(本大题共17小题,每题3分,共51分):
1、在下列函数原型中,可以作为类AA构造函数的是( )。
A void AA(int); B int AA( );
C AA(int) const; D AA(int);
2、下列选项中,哪一项功能是对对象进行初始化( )。
A 析构函数 B 数据成员
C 构造函数 D 静态成员函数
3、假定A为类名,执行A x;语句时将自动调用该类的( )。
A 有参构造函数 B 无参构造函数
C 拷贝构造函数 D 赋值构造函数
4、下列关于构造函数的说法,错误的是( )。
A 系统可以提供默认的构造函数
B 构造函数可以有参数,所以可以有返回值
C 构造函数可以重载
D 构造函数可以设置默认参数
5、有如下类定义:
class Point
{
int x, y;
public:
Point__________:x_(0), y_(0){}
Point(int x, int y = 0):x_(x), y_(y){}
};
若执行语句:Point a(2), b[3], *c[4];则Point类的构造函数被调用的次数是( )。
A 2次 B 3次 C 4次 D 5次
6、在下面的类定义中
class sample
{
public: sample(int val); //①
~sample( ); //②
private:
int a=2.5; //③
public:
sample( ); //④
面向对象程序设计C课后题答案
真诚为您提供优质参考资料,若有不当之处,请指正。
1 / 92 第一章:面向对象程序设计概述
[1_1]什么是面向对象程序设计?
面向对象程序设计是一种新型的程序设计范型。这种范型的主要特征是:
程序=对象+消息。
面向对象程序的基本元素是对象,面向对象程序的主要结构特点是:第一:程序一般由类的定义和类的使用两部分组成,在主程序中定义各对象并规定它们之间传递消息的规律。第二:程序中的一切操作都是通过向对象发送消息来实现的,对象接受到消息后,启动有关方法完成相应的操作。
面向对象程序设计方法模拟人类习惯的解题方法,代表了计算机程序设计新颖的思维方式。这种方法的提出是软件开发方法的一场革命,是目前解决软件开发面临困难的最有希望、最有前途的方法之一。
[1_2]什么是类?什么是对象?对象与类的关系是什么?
在面向对象程序设计中,对象是描述其属性的数据以及对这些数据施加的一组操作封装在一起构成的统一体。对象可以认为是:数据+操作
在面向对象程序设计中,类就是具有相同的数据和相同的操作的一组对象的集合,也就是说,类是对具有相同数据结构和相同操作的一类对象的描述。
类和对象之间的关系是抽象和具体的关系。类是多个对象进行综合抽象的结果,一个对象是类的一个实例。
在面向对象程序设计中,总是先声明类,再由类生成对象。类是建立对象的“摸板”,按照这个摸板所建立的一个个具体的对象,就是类的实际例子,通常称为实例。
[1_3]现实世界中的对象有哪些特征?请举例说明。
对象是现实世界中的一个实体,其具有以下一些特征:
(1)每一个对象必须有一个名字以区别于其他对象。 真诚为您提供优质参考资料,若有不当之处,请指正。
2 / 92 (2)需要用属性来描述它的某些特性。
(3)有一组操作,每一个操作决定了对象的一种行为。
(4)对象的操作可以分为两类:一类是自身所承受的操作,一类是施加于其他对象的操作。例如:雇员刘名是一个对象
C++面向对象技术复习题汇总(含答案)
面向对象程序设计C++
复习资料与答案
第一、二、六、七章习题
一、选择题
1、系统约定C++源程序文件名的缺省的扩展名为( )
A、bcc B、c++ C、cpp D、vcc
2、面向对象的程序设计将数据与( )放在一起,作为一个相互依存、不可分割的整体来处理.
A、对数据的操作 B、信息 C、数据隐藏 D、数据抽象
3、当一个函数无返回值时,函数的类型应定义为( )
A、void B、任意 C、int D、无
4、对于C++的函数,正确的叙述是:
A、函数的定义不能嵌套,但函数的调用可以嵌套
B、函数的定义不能嵌套,但函数的调用不能嵌套
C、函数的定义和调用都不能嵌套
D、函数的定义和调用都可以嵌套
5、下列语句中错误的是( )
A、int *p=new int(10); B、int *p=new int[10]
C、int *p=new int; D、int *p=new int[40](0);
6、假设已经有定义:const char *const name=”chen”;,下面的语句中正确的是:( )
A、name[3]=’a’; B、name=”lin”;
C、name=new char[5]; D、cout<〈name[3];
7、假设已经定义:char *const name=”chen”;, 下面的语句中正确的是:( )
A、name[3]=’q'; B、name=”lin”;
C、name=new char[5]; D、name=new char(‘q’);
8、假设已经定义:const char *name=”chen”;, 下面的语句中错误的是:( )
A、name[3]=’q’; B、name=”lin”;
C、name=new char[5]; D、name=new char(‘q’);
四川大学成人教育《面向对象程序设计》期末考试复习题及参考答案
《面向对象程序设计》第一次作业答案
单项选择题。
1. C+十函数的声明和定义可以分开,函数声明不需要()。(D)
A.返回类型B.函数名C.参数表D.函数体
2. 函数的形参是()。(B )A.全局变呈B.局部变臺C.静态变臺D.部变星
3. 数组名表示的是数组的()。(C )A.类型B.用途C.地址D.长度
4. 如果短整型的长度是2字节,有一个短整型J旨针p的值是0xFFED1200 ,那么p+1的值为()。
(B )A. 0xFFED1201B. 0xFFED1202 C. 0xFFED1203D. 0xFFED1204
5. private访问属性限制对象的成员可以在(冲访问。(A )
A.本类的成员函数B. main函数C.父类的成员函数D.子类的成员函数
6. 如果走义了一个类myclass则为myclass类对象以成员函数形式重载后++运算符的声明应该为(1(C)
A. myclass operator++();B. myclass& operator++();
C. myclass operator++( int );D. myclass& operator++( int);
7. 如果有如下走义:const char* str = "OK";那么,sizeof ( str)的值应该是()(D )
A. IB. 2C. 3D. 4
8. 父类和子类各自走义一个成员函数,函数名相同,参数表不同,那么()。(D)
A.在子类中这两个函数构成重载关系B.子类不会继承父类的这个函数
C.子类中的函数会覆盖父类中的函数D.编译时会发生错误
9. 如果myclass类走义了拷贝构造函数和一个整型参数的构造函数,还重载了赋值运算符,那么语句
myclass obj = 100 ;会( )。(B )
A.调用拷贝构造函数B.调用整型参数的构造函数C.调用赋值运算符D.引起编译错误
10. 抽象类指的是()。(D)
C++面向对象程序设计试题带答案(四)
C++面向对象程序设计模拟试题四
一、单项选择题(本大题共10小题,每小题2分,共20分)
1.下列关于C++函数的说明中,正确的是( )。
A)内联函数就是定义在另一个函数体内部的函数 B)函数体的最后一条语句必须是return语句
C)调用一个函数之前,如果还没有定义这个函数,必须先声明其原型
D)编译器会根据函数的返回值类型和参数表来区分函数的不同重载形式
2.假定MyCIass为一个类,那么下列的函数说明中,( )为该类的无参构造函数。
A)void MyClass(); B)~MyClass(int n); C)MyClass( ); D)~MyClass( );
3.下列叙述中,错误的是( )。
A)派生类可以使用private派生 B)对基类成员的访问必须是无二义性的
C)基类成员的访问能力在派生类中维持不变 D)赋值兼容规则也适用于多继承的组合
4.当一个类的某个函数被说明为virtual时,该函数在该类及其所有派生类中( ) 。
A. 都是虚函数 B. 只有被重新说明为vittual时才是虚函数 C.
都不是虚函数 D. 上面都不正确
5.派生类的构造函数的成员初始化表中,不能包含( )。
A)基类的构造函数B)派生类中子对象的初始化C)基类中子对象的初始化D)派生类中一般数据成员的初始化
6.下列是重载加法运算符的函数原型声明,其中错误的是( )。
A)MyClass operator+(double,double); B)MyClass
operator+(double,MyClass);
C)MyClass operator+(MyClass,double); D)MyClass
operator+(MyClass,MyClass);
7.派生类中的成员不能直接访问基类中的( )成员。A)public B)private C)virtual D)protected
