Skip to content

附录J 复习题答案

本章概述

本附录提供各章复习题的参考答案,帮助读者检验对知识点的掌握程度。

第2章 复习题答案

  1. C++的main()函数有哪两种标准格式?

    cpp
    int main() { /* ... */ }
    int main(int argc, char* argv[]) { /* ... */ }
  2. cout和cin分别用于什么?

    • cout用于标准输出(输出到屏幕)
    • cin用于标准输入(从键盘读取)
  3. C++程序的源代码扩展名通常是什么?

    • .cpp.cxx.cc.C
  4. using namespace std;的作用是什么?

    • 将整个std名称空间引入当前作用域,可以不使用std::前缀

第3章 复习题答案

  1. 为什么C++有多种整型和浮点类型?

    • 为了提供不同大小和精度的数据类型,满足不同需求
  2. char类型和整型有什么关系?

    • char本质上是一个小整数,通常占1字节,可以存储ASCII码值
  3. 什么是类型转换?有哪几种方式?

    • 类型转换是将一种数据类型转换为另一种
    • 方式:隐式转换、static_castdynamic_castconst_castreinterpret_cast
  4. const和#define定义常量有什么区别?

    • const有类型检查,#define只是文本替换
    • const遵循作用域规则,#define是全局的

第4章 复习题答案

  1. 数组和vector有什么区别?

    • 数组大小固定,vector可以动态调整
    • vectorat()方法提供边界检查
  2. 如何使用new创建动态数组?

    cpp
    int* arr = new int[10];  // 创建
    delete[] arr;             // 释放
  3. 指针和数组有什么关系?

    • 数组名是指向第一个元素的指针
    • 数组作为参数传递时退化为指针
  4. 结构和共用体有什么区别?

    • 结构所有成员共享内存(相加)
    • 共用体所有成员共享同一内存(取最大)

第5章 复习题答案

  1. for循环的三个表达式分别是什么作用?

    • 初始化:设置循环变量初始值
    • 条件:判断是否继续循环
    • 表达式:修改循环变量
  2. 前缀和后缀递增运算符有什么区别?

    • 前缀++i:先递增,后使用
    • 后缀i++:先使用,后递增
  3. while和do while有什么区别?

    • while先判断条件,可能一次也不执行
    • do while先执行循环体,至少执行一次
  4. 如何使用cin读取包括空格的输入?

    • 使用getline(cin, str)读取整行

第6章 复习题答案

  1. &&和||的短路求值是什么?

    • &&:第一个操作数为假时,不再计算第二个
    • ||:第一个操作数为真时,不再计算第二个
  2. switch语句中为什么需要break?

    • 不使用break会发生"贯穿"(fallthrough)
  3. 如何检查文件是否成功打开?

    • 使用is_open()方法或bool转换
  4. cctype库提供了哪些字符函数?

    • isalpha()isdigit()isalnum()isspace()

第7章 复习题答案

  1. 按值传递和按引用传递有什么区别?

    • 按值传递:函数接收参数副本,不影响原变量
    • 按引用传递:函数接收参数引用,可以修改原变量
  2. 数组作为参数时为什么需要额外传递大小?

    • 数组作为参数退化为指针,丢失大小信息
  3. 递归函数的基准情况是什么?

    • 基准情况是递归结束的条件,不再进行递归调用
  4. 函数指针有什么用途?

    • 回调函数、函数数组、策略模式、动态分发

第8章 复习题答案

  1. 内联函数和普通函数有什么区别?

    • 内联函数在调用点展开,消除函数调用开销
  2. 引用和指针有什么区别?

    • 引用是别名,必须初始化,不能重新绑定
    • 指针是地址,可以不初始化,可以改变指向
  3. 函数重载的规则是什么?

    • 函数名相同,参数列表不同
  4. 函数模板如何工作?

    • 编译器根据调用自动生成具体类型的函数

第9-18章复习题答案要点

详细答案请参考各章节内容。主要要点:

  • 第9章:存储方案、名称空间、单独编译
  • 第10章:类、构造函数、析构函数、this指针
  • 第11章:运算符重载、友元、类型转换
  • 第12章:动态内存、拷贝控制、静态成员
  • 第13章:继承、多态、虚函数、抽象基类
  • 第14章:包含、私有继承、多重继承、类模板
  • 第15章:友元类、嵌套类、异常、RTTI
  • 第16章:string、智能指针、STL容器/迭代器/算法
  • 第17章:流、格式化、文件I/O、随机存取
  • 第18章:移动语义、Lambda、可变参数模板、并行编程

基于 VitePress 构建