没有合适的资源?快使用搜索试试~ 我知道了~
高级程序期末考试选择题山东大学计算机科学与技术学院
需积分: 4 2 下载量 153 浏览量
2023-05-21
16:54:33
上传
评论 1
收藏 117KB DOCX 举报
温馨提示
试读
33页
高级程序期末考试选择题山东大学计算机科学与技术学院 有C++高级程序设计常考的选择题and判断题
资源推荐
资源详情
资源评论
对于常数据成员,下面描述正确的是 【 BA 】
A. 常数据成员必须被初始化,并且不能被修改
B. 常数据成员可以不初始化,并且不能被修改
C. 常数据成员可以不初始化,并且可以被修改
D. 常数据成员必须被初始化,并且可以被修改
答案是 A. 常数据成员必须被初始化,并且不能被修改。
常数据成员在对象创建时必须被初始化,并且一旦被初始化后,其值不能被修
改。这是因为常数据成员被声明为 const,表示其值是常量,在对象的生命周
期内是不可变的。
如果常数据成员没有在构造函数的初始化列表中进行初始化,会导致编译错
误。一旦常数据成员被初始化,它的值就被确定,并且不能在对象的生命周期
内进行修改。
因此,选项 B、C 和 D 都是错误的描述。只有选项 A 描述了常数据成员的正
确特性,即必须被初始化且不能被修改
在 C++中,使用流进行输入输出,其中用于定义文件输入流对象的类是 【 B 】
A. ios B. ifstream C. ofstream D. istrstream
答案是 B. ifstream。在 C++中,用于定义文件输入流对象的类是 ifstream。它
是 istream 类的派生类,用于从文件中读取数据。ifstream 类提供了一些用于读取
文件的成员函数,如 open()用于打开文件、close()用于关闭文件、getline()用于读
取一行文本等。其他选项的描述如下:
� A. ios 是一个基类,用于定义流的基本操作和状态。它不是用于定义文件
输入流对象的类。
� C. ofstream 是用于定义文件输出流对象的类。它是 ostream 类的派生类,
用于向文件中写入数据。
� D. istrstream 是用于从字符数组中进行输入的类,而不是用于定义文件输
入流对象的类。
下列关于异常的叙述错误的是【 D 】
A. 只要是编程者认为是异常的都可当异常抛出
B. 硬件故障也可当异常抛出
C. 运行错属于异常
D. 编译错属于异常,可以抛出
答案是 D. 编译错属于异常,可以抛出。
选项 D 的描述是错误的。编译错误(compile errors)不属于异常。编译错误
是在编译阶段发生的错误,通常是由于语法错误、类型错误、缺少声明等问题
导致的。这些错误在编译器检查源代码时就会被捕捉到,并且会导致编译过程
中断,无法生成可执行文件。
异常(exceptions)是在程序运行时发生的错误或异常情况,它们与编译错误
是不同的概念。运行时错误包括但不限于:除零错误、内存访问错误、无效的
操作、文件不存在等。当程序运行时遇到异常情况,可以通过抛出异常并在适
当的位置进行捕获和处理。
其他选项的描述如下:
� A. 只要是编程者认为是异常的都可以抛出。这是正确的,编程者可以根
据程序逻辑和需求自行决定在何处抛出异常。
� B. 硬件故障也可以当作异常抛出。这是正确的,某些硬件故障情况也可
以通过抛出异常来通知程序进行相应处理。
� C. 运行错误属于异常。这是正确的,运行时错误是在程序运行过程中发
生的异常情况,可以通过异常处理机制进行处理。
在面向对象的程序设计中,基类可以为其派生类提供一组公共的行为,而各个派生类可以为
这组公共行为提供不同的实现,从而使得派生类的对象在执行这些公共行为时会有不同的表
现,这种特性称为面向对象的【 D 】
A. 封装性 B. 消息性 C. 继承性 D. 多态性
答案是 D. 多态性。
多态性(Polymorphism)是面向对象程序设计中的一个重要特性,它允许不同
的对象以各自独特的方式对共享的行为进行响应。
通过继承关系,基类可以定义一组公共的行为(方法或函数),而派生类可以
继承这些公共行为并提供自己的实现。当使用基类的指针或引用来操作派生类
的对象时,可以根据实际对象的类型调用相应的方法,这就是多态性的体现。
多态性使得程序可以以一种统一的方式处理不同的对象,根据对象的实际类型
来决定具体调用哪个类的方法,从而实现代码的灵活性和可扩展性。
其他选项的描述如下:
� A. 封装性(Encapsulation)是面向对象编程中的另一个重要特性,它将
数据和操作封装在对象中,隐藏了内部实现细节,通过公共接口访问对
象。封装性确保数据的安全性和一致性,并提供了良好的模块化和代码
复用。
� B. 消息性(Message passing)是一种描述对象之间通信的概念,它表
示对象之间通过发送消息来交互和执行操作。消息性是面向对象编程中
的基本概念之一,但不是描述基类和派生类关系的特性。
� C. 继承性(Inheritance)是面向对象编程中的重要特性,它允许一个类
(派生类)从另一个类(基类)继承属性和行为。继承性允许派生类重
用基类的代码,并在此基础上进行扩展和修改。尽管继承性为多态性提
供了基础,但继承本身并不是描述派生类对象在执行公共行为时有不同
表现的特性。
关于域的描述中,错误的是【 C 】
A. 一个类是一个独立的域
B. 派生类域被自动嵌套在基类类域中
C. 域操作符::可以被重载
D. 不同域中可以定义同名变量和函数
错误的描述是 C. 域操作符::可以被重载。
域操作符::用于访问类的静态成员和命名空间的成员,它本身不可以被重载。
在 C++中,重载操作符是指对类的成员函数或全局函数进行重载,但域操作
符::不是一个可以重载的操作符。它的功能是固定的,用于限定命名空间或类的
作用域。
A. 一个类是一个独立的域: 这是正确的描述。在面向对象编程中,类被视为
一个独立的域,它可以包含成员变量、成员函数和其他类相关的元素。类提供
了封装数据和行为的能力,它定义了对象的属性和操作。
B. 派生类域被自动嵌套在基类类域中: 这是正确的描述。在继承关系中,派
生类继承了基类的成员,包括成员变量和成员函数。当在派生类中访问成员
时,可以直接使用成员名,而无需显式地指定基类的名称。编译器会自动在派
生类的域中查找成员,如果找不到则会继续在基类的域中查找。
C. 域操作符::可以被重载: 这是错误的描述,如前面所解释的。
D. 不同域中可以定义同名变量和函数: 这是正确的描述。不同的域可以定义
具有相同名称的变量和函数,因为每个域都有自己的作用域。当访问变量或函
数时,编译器会根据当前的作用域来确定使用哪个域中的定义。这种机制可以
实现命名空间的概念,避免名称冲突和重复。
下列对变量的引用中错误的是【 C 】
A. int a; int &p = a;
B. char a; char *p = &a;
C. int a; int &p; p = a;
D. float a; float p=a;
错误的是 C. int a; int &p; p = a;
在 C 语言中,引用必须在声明的同时初始化,并且不能单独声明一个引用变
量。选项 C 中的代码尝试在声明引用 p 时未进行初始化,然后在后面的语句中
尝试将 a 赋值给 p,这是错误的语法。正确的方式是在声明引用时进行初始
化,如选项 A 中的代码所示。
选项 A. int a; int &p = a; 这是正确的引用的使用方式,p 是 a 的引用,即 p 和
a 指向相同的内存位置。
选项 B. char a; char *p = &a; 这是使用指针的方式,p 指向 a 的内存位置。
选项 D. float a; float p = a; 这是将 a 的值赋给 p,而不是使用引用或指针。p
是一个新的变量,它的值与 a 相同,但它们是独立的变量。
下面【 A 】的叙述不符合赋值兼容规则。
A. 基类的对象可以赋值派生类的对象
B. 派生类指针可以指向基类对象
C. 派生类的对象可以初始化基类的对象
D. 派生类的对象的地址可以赋值给指向基类的指针
正确的回答是:A
A. 基类的对象可以赋值派生类的对象
这叙述不符合赋值兼容规则。根据赋值兼容规则,在 C++中,可以将派生类对
象赋值给基类对象,但不能将基类对象直接赋值给派生类对象。这是因为派生
类对象可能包含额外的成员或重写的成员函数,而基类对象无法完全表示派生
类的特性。
B. 派生类指针可以指向基类对象
这是符合赋值兼容规则的。派生类指针可以指向基类对象,因为派生类对象是
基类对象的扩展。
C. 派生类的对象可以初始化基类的对象
这是符合赋值兼容规则的。可以使用派生类对象初始化基类对象,只会保留基
类的成员和属性,而派生类特有的成员和属性将被忽略。
D. 派生类的对象的地址可以赋值给指向基类的指针
这也是符合赋值兼容规则的。派生类对象的地址可以赋值给指向基类的指针,
因为派生类对象包含了基类对象的所有成员和属性。这样的指针可以用于访问
基类对象的成员和调用基类对象的方法
构造函数不具备的特征的是【 D 】
剩余32页未读,继续阅读
资源评论
咕噜咕噜咕噜128
- 粉丝: 212
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功