4. 简答题#
只有一年的往年回忆可供参考, 所以没额外出多少简答题. 网上都能查, 就不出解答参考了. 最好的方法是别做、别准备, 到时候随便编!
绑定 (binding)#
什么是静态绑定 (static binding) 和动态绑定 (dynamic binding)?
静态绑定和动态绑定分别有什么优缺点?
在什么情况下需要使用静态绑定或动态绑定, 请先给出理论解释再举例说明.
动态绑定是怎么实现的?
多态 (polymorphism)#
什么是多态?什么是静态多态 (static polymorphism) 和动态多态 (dynamic polymorphism)?
编译时多态 (compile-time polymorphism) 和运行时多态 (run-time polymorphism) 分别有什么优缺点?
请列举至少 2 种编译时多态方法和至少 1 种运行时多态方法.
请选择一种你列举的多态方法, 说明如何实现.
面向对象程序设计 (object-oriented proramming)#
相比于虚函数, 纯虚函数对类有什么影响? 列举至少 3 点.
派生类继承基类的方式有哪些?
继承按继承逻辑可以分为 is-a 和 has-a, 各种继承方式分别对应于这两个逻辑的哪一种?
重载 (overloading) , 重写 (override) 和覆盖 (shadow) 的区别? 可参考 虚函数调用的感性理解.
杂七杂八 (miscellaneous)#
什么是函数重载?
什么是抽象?
什么是封装?
为什么要有构造函数和析构函数? (要答好这道题, 建议了解 不变式 <question_board:invariant>, 虽然教学很 "奇葩地" 从未提到不变式.)
友元关系的功能?
引用和指针的区别?
请说明函数模板 (function template) 与函数模板实例化 (function template instantiation) 之间的区别与联系.
请说明函数模板 (function template) 与函数模板特化 (function template specialization) 之间的联系, 函数模板特化参与重载吗?