常见问题解答#
别看: 免争议声明
以下所有问题都是有人实际问我的. 由于主要面向应试学生, 解答会大量基于课内 C 风格 C++ 教学, 所以必然有无法描述清楚或没有扩展的内容.
常见问题解答确实只是为了解答该问题才写的, 且由于大量基于课内 C 风格 C++ 教学, 很难用作现代 C++ 知识点整理, 自学请参考 C++ 学习建议、环境配置等. 此外, 解答并不是正式手册, 在解释时对很多内容进行了简化.
阅读方法
前置内容
这是阅读本部分所需的前置内容.
提示
这是对思维的进一步启发.
警告
这是对内容的警告性说明.
危险
这是指出内容的危险性.
参见
这是可用的扩展资料.
相关核心准则
这是与内容明确相关的 C++ 核心准则, 阅读标题就已经能带来启发, 你没有点击阅读的必要.
别看
这是与解答相关性不大的补充性内容.
基本概念#
基本概念部分仅对这些内容进行简述, 并给出相关解答的跳转.
警告
对于更下面的基本概念, 我不得不假定读者已经阅读上面的基本概念, 否则难以用教学大纲涉及的内容给出好的解释.
- 对象 (object)
- 初始化、赋值 (initialization, assignment)
- 结构体 (struct)
- 资源 (resource)
- 类型转换 (type conversion)
const
- 引用 (reference)
- 指针 (pointer)
- 函数 (function)
- 函数参数 (function parameter)
- 值类别 (value category)
auto
sizeof
- C 风格数组:
T array[size]
(C-style array) - C 风格字符串和字符串字面值 (C-style string and string literal)
- 运算符重载及示例 (operator overloading)
- 模板 (template)
- 移动语义 (move semantics)
表达式和语句#
类与类层次#
构造函数、赋值函数、析构函数#
这些函数控制了对象的生命期: 创建、复制和销毁.
其中有一些函数在不定义时会自动以默认行为定义, 称为特殊函数:
默认构造函数:
Widget()
拷贝构造函数:
Widget(Widget const&)
拷贝赋值函数:
Widget& operator=(Widget const&)
移动构造函数:
Widget(Widget&&)
移动赋值函数:
Widget& operator=(Widget&&)
析构函数:
~Widget()
类层次 (面向对象程序设计, Object-Oriented Programming, OOP)#
只是使用类不是面向对象程序设计, 使用继承和类层次才是.
输入输出#
模板#
标准库、算法、数据结构#
术语和惯用法#
Visual Studio 特定问题#
习题#
非答疑范畴问题#
核心准则#
为了配合常见问题解答, 对 C++ Core Guidelines (C++ 核心准则) 中的部分准则进行调整并翻译.
废弃资料#
常见答疑类型
表达式和语句
标准库
标准库.容器和 算法
标准库.时间
标准库.随机数
编程思维
编程思维.不要重复代码
编程思维.抽象
编程思维.单一职责
编程思维.类型安全
编程思维.设计模式
编程思维.资源安全
C 风格 CPP: 这里的 C 风格不是诋毁 C 语言, C 风格 C++ 是一种杂糅了 C 和 C++ 的恶心东西, 先学它只会让学生讨厌 C++.
C 风格 CPP.手动 new 与 delete
C 风格 CPP.数组
C 风格 CPP.指针运算
C 风格 CPP.字符串
C 语言问题
错误处理
错误处理.异常
面向对象编程
类型与对象: 这里的对象不是面向对象编程中所指的 "对象", 一个非正式的解释见此.
类型与对象. 初始化
类型与对象.存储周期
类与 结构体
输入输出
输入输出.二进制
输入输出.格式化
输入输出.文件
术语和惯用法
算法与数据结构: 这里的算法是一般意义上的算法
算法与数据结构.递归
算法与数据结构.排序
算法与数据结构.链表
项目管理: 也包含多文件编译、包含头文件相关内容
项目管理.包管理
项目管理.构建工具
资源 管理