4. 简答题#

只有一年的往年回忆可供参考, 所以没额外出多少简答题. 网上都能查, 就不出解答参考了. 最好的方法是别做、别准备, 到时候随便编!

绑定 (binding)#

  1. 什么是静态绑定 (static binding) 和动态绑定 (dynamic binding)?

  2. 静态绑定和动态绑定分别有什么优缺点?

  3. 在什么情况下需要使用静态绑定或动态绑定, 请先给出理论解释再举例说明.

  4. 动态绑定是怎么实现的?

多态 (polymorphism)#

  1. 什么是多态?什么是静态多态 (static polymorphism) 和动态多态 (dynamic polymorphism)?

  2. 编译时多态 (compile-time polymorphism) 和运行时多态 (run-time polymorphism) 分别有什么优缺点?

  3. 请列举至少 2 种编译时多态方法和至少 1 种运行时多态方法.

  4. 请选择一种你列举的多态方法, 说明如何实现.

面向对象程序设计 (object-oriented proramming)#

  1. 相比于虚函数, 纯虚函数对类有什么影响? 列举至少 3 点.

  2. 派生类继承基类的方式有哪些?

  3. 继承按继承逻辑可以分为 is-a 和 has-a, 各种继承方式分别对应于这两个逻辑的哪一种?

  4. 重载 (overloading) , 重写 (override) 和覆盖 (shadow) 的区别? 可参考 虚函数调用的感性理解.

杂七杂八 (miscellaneous)#

  1. 什么是函数重载?

  2. 什么是抽象?

  3. 什么是封装?

  4. 为什么要有构造函数和析构函数? (要答好这道题, 建议了解 不变式 <question_board:invariant>, 虽然教学很 "奇葩地" 从未提到不变式.)

  5. 友元关系的功能?

  6. 引用和指针的区别?

  7. 请说明函数模板 (function template) 与函数模板实例化 (function template instantiation) 之间的区别与联系.

  8. 请说明函数模板 (function template) 与函数模板特化 (function template specialization) 之间的联系, 函数模板特化参与重载吗?