C/C++ 面试高效知识总结

需积分: 3 0 下载量 90 浏览量 更新于2024-08-05 收藏 9.82MB PDF 举报
C++ 面试Effective知识总结 C++ 是一门功能强大且复杂的编程语言,它具有多种编程范式,包括面向对象、泛型编程和函数式编程等。为了更好地理解和应用 C++,我们需要了解一些基本概念和最佳实践。本文总结了一些 Effective 的 C++ 面试知识点,涵盖了语法、编译器、对象生命周期、资源管理、异常处理、多态、继承、接口设计等方面。 1. 视 C++ 为一个语语言联邦 C++ 是一个多范式语言,它同时支持面向对象、泛型编程和函数式编程等多种编程范式。因此,在编写 C++ 代码时,我们需要了解不同的编程范式,并选择合适的编程风格。 2. 宁可以编译器替换预处理器 在 C++ 中,预处理器是一个重要的组件,它负责将源代码转换为编译器可以识别的格式。然而,在某些情况下,我们可以使用编译器的功能来替换预处理器的某些功能,例如使用 `#ifndef` 和 `#define` 指令来控制编译流程。 3. 尽可能使⽤ const 在 C++ 中,`const` 关键字用于指定变量或函数返回值的常量性。使用 `const` 可以帮助我们编写更加安全和高效的代码。 4. 确定对象被使用前已先被初始化 在 C++ 中,对象的初始化是一个重要的步骤。我们需要确保对象在被使用前已经被正确初始化,以免出现意外的行为。 5. 了解 C++ 默默编写并调⽤哪些函数 C++ 编译器会自动为我们生成一些函数,例如默认构造函数、复制构造函数、复制赋值操作符和析构函数等。了解这些函数的生成规则和使用场景非常重要。 6. 若不想使用编译器自动生成的函数,就应该明确拒绝 如果我们不想使用编译器自动生成的函数,可以通过将相应的成员函数声明为私有并且不予实现来达到目的。 7. 为多态基类声明 virtual 析构函数 在 C++ 中,多态基类需要声明虚拟析构函数,以便在对象销毁时正确地释放资源。 8. 别让异常逃离析构函数 析构函数应该负责释放对象所占用的资源,而不是传播异常。如果需要处理异常,应该在普通函数中进行处理。 9. 绝不在构造和析构过程中调⽤ virtual 函数 在 C++ 中,virtual 函数的调用规则非常复杂。在构造和析构过程中,不应该调用 virtual 函数,以免出现意外的行为。 10. 令返回⼀个对象 在 C++ 中,返回对象可以使用移动语义来提高性能。 11. 在赋值操作符中处理“⾃我赋值” 在 C++ 中,赋值操作符需要正确地处理“⾃我赋值”的情况,以免出现意外的行为。 12. 赋值对象时应确保复制“对象内的所有成员变量”及“所有基类成分” 在 C++ 中,对象的赋值需要正确地复制所有成员变量和基类成分,以免出现意外的行为。 13. 以对象管理资源 在 C++ 中,资源的管理是一个重要的方面。我们可以使用智能指针来管理资源,并确保资源在正确的时机被释放。 14. 在资源管理类中⼩⼼copying ⾏为 在 C++ 中,资源管理类需要正确地实现复制行为,以免出现意外的行为。 15. 在资源管理类中提供对原始资源的访问 在 C++ 中,资源管理类可以提供对原始资源的访问,以便客户端可以正确地使用资源。 16. 成对使⽤ new 和 delete 时要采取相同形式 在 C++ 中,new 和 delete 操作需要成对出现,以免出现资源泄漏。 17. 以独⽴语句将 newed 对象存储于智能指针 在 C++ 中,我们可以使用智能指针来管理资源,并确保资源在正确的时机被释放。 18. 让接⼝容易被正确使⽤,不易被误⽤ 在 C++ 中,接口的设计非常重要。我们需要确保接口易于使用,并且难以被误用。