C++面试常见问题解答

需积分: 9 2 下载量 174 浏览量 更新于2024-07-20 收藏 262KB PDF 举报
C 面试问与答攻略 本文总结了 C 面试中常见的问题和答案,涵盖了虚函数、纯虚函数、虚析构函数、i++和++i 等关键知识点。 1. 虚函数和纯虚函数 虚函数是为了实现动态绑定的机制,声明格式为 `virtual ReturnType FunctionName(Parameter)`。纯虚函数是为了派生接口,声明格式为 `virtual ReturnType FunctionName() = 0`。理解虚函数和纯虚函数的区别是 C 面试中的一个重要考点。 2. 基类的虚析构函数 基类需要虚析构函数是因为,如果不使用虚析构函数,可能会导致资源泄漏。标准规定,当derived class经由一个base class指针被删除而该base class的析构函数为non-virtual时,将发生未定义行为。解决方法是为多态基类声明一个虚析构函数。 3. i++和++i 的区别 i++和++i 都是自增运算符,但是它们的实现代码不同。i++ 的实现代码为: ```c int operator++(int) { int temp = *this; ++*this; return temp; } ``` ++i 的实现代码为: ```c int& operator++() { *this += 1; return *this; } ``` i++ 返回的是 i 的值,而 ++i 返回的是 i+1 的值。++i 是一个确定的值,是一个可修改的左值。例如,`cout << ++(++(++i)) << endl;` 就是一个合法的语句。 在实际应用中,i++ 和 ++i 的选择取决于具体的需求。如果需要返回 i 的值,可以使用 i++,如果需要返回 i+1 的值,可以使用 ++i。 本文总结了 C 面试中常见的问题和答案,涵盖了虚函数、纯虚函数、虚析构函数、i++和++i 等关键知识点,为 C 面试提供了有价值的参考。