解答参考的说明#
解答参考制作人: 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
, 指针指向的int
是const
的, 不可通过这个指针修改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};