### C++程序设计实践教程-马光志-习题答案 #### 第1章 引论 **一、基本内容** 本章介绍了计算机编程语言的基本分类和发展历程,包括机器语言、汇编语言、高级语言和元语言的概念。同时,还提到了编译与连接的过程以及早期绑定和晚期绑定的概念。面向对象编程的核心概念如封装、重载、多态性和继承也被简要介绍。此外,本章节还探讨了抽象程序设计的方法和程序结构与组织的基本原则。 1. **机器语言与汇编语言**:机器语言是最底层的计算机语言,由二进制指令组成;汇编语言则是机器语言的一种符号表示形式,它将二进制指令映射为更容易阅读的助记符。 2. **高级语言**:高级语言如C++、Java等,接近自然语言,更易于理解与编写,需要通过编译器或解释器转换为机器码才能被执行。 3. **元语言**:用于定义其他语言的工具,如编译器和解析器使用的语言。 4. **编译与连接**:编译过程是将源代码转换为机器码,连接则是将多个目标文件链接为可执行文件。 5. **早期绑定与晚期绑定**:早期绑定在编译时确定函数或变量的地址,而晚期绑定则在运行时才确定。 6. **面向对象编程**:一种编程范式,强调数据封装、继承、多态等特性。 **三、习题答案** 1. **1.1 高级语言程序经过哪些阶段才能成为可执行程序?** 解答:高级语言程序需要经过一系列处理才能变成可执行程序,具体包括: - **预处理**:处理预处理器指令,如宏定义、条件编译等。 - **词法分析**:将源代码分解成一系列标记。 - **语法分析**:根据语法规则构建抽象语法树。 - **代码生成**:根据抽象语法树生成目标代码。 - **模块连接**:将多个目标文件和库文件连接成最终的可执行文件。 2. **1.2 什么叫静态连接?什么叫动态连接?它们有什么区别?** 解答: - **静态连接**:在编译时将所有依赖的库文件合并到最终的可执行文件中。 - **动态连接**:在程序运行时动态加载所需的库文件。 - **区别**: - **加载时间**:静态连接在程序启动前完成,而动态连接在程序运行时完成。 - **内存占用**:静态连接可能导致多个程序共享相同的代码段在内存中多次加载,而动态连接可以实现代码的共享。 - **执行速度**:静态连接的程序执行速度通常更快,因为不需要在运行时进行额外的加载和绑定操作。 3. **1.3 什么叫静态绑定?什么叫动态绑定?它们有什么区别?** 解答: - **静态绑定**:在编译期间确定函数或方法的具体实现,无需在运行时确定。 - **动态绑定**:在程序运行时根据对象的实际类型来决定调用哪个方法实现。 - **区别**:静态绑定发生在编译期,而动态绑定发生在运行期。 4. **1.4 什么叫封装?提供封装机制有什么好处?** 解答:封装是将对象的数据(属性)和操作(方法)组合在一起,并控制其访问权限。封装机制的好处包括: - **隐藏内部实现细节**:提高系统的稳定性和安全性。 - **简化接口**:用户只需要关注对象提供的功能,而不需要了解其实现细节。 - **增强可维护性**:可以修改内部实现而不影响外部接口。 5. **1.5 什么叫包含继承?什么叫受限继承?** 解答: - **包含继承**:派生类继承基类的所有属性和方法,并可以添加自己的新属性和方法。 - **受限继承**:派生类只继承基类的部分属性和方法,通常用于实现特定的功能限制。 6. **1.6 C++语言有何特点?** 解答:C++语言的特点包括但不限于: - **兼容C语言**:保留了C语言的优点,如高效的代码性能。 - **面向对象**:支持封装、继承和多态等面向对象编程特性。 - **模板支持**:提供模板机制,增强代码的泛化能力和复用性。 - **异常处理**:内置异常处理机制,提高程序的健壮性。 - **内存管理**:提供手动内存管理,虽然灵活但也增加了编程难度。 7. **1.7 应当怎样组织C++的程序?** 解答:C++程序的组织应遵循以下原则: - **分离接口与实现**:使用头文件定义接口,实现细节放在源文件中。 - **模块化设计**:将程序划分为多个逻辑上独立的模块。 - **合理利用命名空间**:避免名称冲突,提高代码的可读性和可维护性。 #### 第2章 C++的变量、类型及函数 **三习题答案** 2.1 给出声明: ```cpp char c, *pc; const char cc = 'a'; const char *pcc; char *const cpc = &c; const char *const cpcc = &cc; char *const *pcpc; ``` - **合法性分析**: - `c = 'b';` 合法,因为`c`是普通字符变量。 - `pc = &c;` 合法,因为`pc`是指向字符的指针。 - `cc = 'b';` 不合法,因为`cc`是常量字符。 - `pcc = &cc;` 合法,`pcc`是指向常量字符的指针。 - `cpc = &cc;` 不合法,`cpc`是指向字符的常量指针,不能更改其所指向的地址。 - `cpcc = &cc;` 合法,`cpcc`是指向常量字符的常量指针。 - `pcpc = &cpc;` 合法,`pcpc`是指向常量指针的指针。 通过以上分析,我们了解到C++中不同类型的变量和指针的使用规则以及合法赋值的条件。这些基础知识对于编写正确的C++程序至关重要。
剩余35页未读,继续阅读
- 粉丝: 1
- 资源: 2
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Cisco Packet Tracer实用技巧及网络配置指南
- 国际象棋棋子检测8-YOLO(v5至v11)、COCO、CreateML、Paligemma、TFRecord、VOC数据集合集.rar
- jQuery信息提示插件
- 电动蝶阀远程自动化控制系统的构建与应用
- 基于python和协同过滤算法的电影推荐系统
- Hadoop复习资料题库.zip
- 国际象棋棋子检测3-YOLO(v5至v9)、COCO、CreateML、Darknet、Paligemma、TFRecord数据集合集.rar
- Python毕业设计基于知识图谱的电影推荐系统源码(完整项目代码)
- 基于C++的简易图书管理系统(含exe可执行文件)
- 使用python爬取数据并采用Django搭建系统的前后台,使用Spark进行数据处理并进行电影推荐项目源码