解答参考的说明#

解答参考制作人: 20-土木转计科-蒋志强; 个人的 C++ 答疑群: 682132891.

  • 请在实在没有思路时才阅读解答参考, 由于题目限制不多, 每道题都能有各种各样的解法, 如果在自己尝试之前就看了参考, 容易先入为主, 陷入惯性思维当中.

  • 本参考尽量在 C++98 下用课内涉及的内容写, 这意味着本参考的方法应该是多数人能想到的, 而不是最简单的方法.

  • 所有代码仅作为 一种 解答思路的参考, 由于很久没面向考试编程过, 编程中可能有不少 "冗余" 代码.

  • 只包含了确实必要的头文件, 虽然这不是推荐的做法, 但能方便读者.

考点#

针对每个回忆题, 我尽量列举了其中重要的考点, 使用的关键词尽量保证能在搜索 常见问题解答 中找到对应的解释 (除非没解答).

重复进行考察的考题#

近年来, 计软智网转专业试题中存在大量重复考过的考题. 由于这类题有很多, 我仅为新题添加到旧题的跳转链接, 而没有反过来在旧题位置添加到新题的跳转链接, 你可以通过 往年相同题目 对此进行搜索.

一些难以妥协的书写习惯#

类型转换#

相比于 (char) i 来将 i 转换为 char 类型, 我更倾向于,

  • static_cast<char>(i), 表示这是我明确要求的类型转换.

  • reinterpret_cast<char*>(&value), 表示我要 "打破" C++ 的类型系统, 强制进行类型转换, 并为它的后果负责.

const 放置的位置#

相比于 const int value, 我更倾向于 int const value, 因为这样一来 const 始终作用于它左边的内容,

  • int const* pointer, 指针指向的 intconst 的, 不可通过这个指针修改 int.

  • int* const pointer, 指针本身是 const 的, 不可切换指针指向的对象.

  • void print() const, 成员函数是 const 的, 该成员不可改变类的数据.

  • ...

函数返回值的位置#

相比于 int function(), 我更倾向于 auto function() -> int, 因为,

  • 它在我眼里更好看.

  • 由于所有函数都以 auto 开始, 它们的名字对齐了.

  • 从逻辑上, 返回值就该在函数运行之 .

  • 有函数式编程风格的味道.

  • 避免了重复, 例如 Vector::value_type Vector::function() 可以写成 auto Vector::function() -> value_type.

写明 public#

嗯, 我知道 class 默认是 private, struct 默认是 public, 但我为什么这么折腾呢?直接不管什么情况, 把 public 还是 private 写明不就好了.

1struct Name {
2 public:  // 不过是几个字母而已
3  std::string first_name;
4  std::string last_name;
5};