C++ 面试问题

💡 原文英文,约1500词,阅读约需6分钟。
📝

内容提要

这篇文章是关于C++面试问题的后续,介绍了局部变量、delete和delete[]的区别、赋值运算符的实现、std::map和std::unordered_map的区别、虚函数的实现以及错误的修复方法。这些问题适用于C++编程职位的面试。

Q&A

局部变量在函数返回后会发生什么?

局部变量在函数返回后会消失,导致引用成为悬空引用。

delete和delete[]有什么区别?

delete用于销毁单个对象,而delete[]用于销毁对象数组。

如何实现赋值运算符以避免内存泄漏?

需要实现深拷贝,确保在赋值前删除已有指针,并分配新的内存。

std::map和std::unordered_map的时间复杂度有什么不同?

std::map的时间复杂度为O(lg n),而std::unordered_map的平均时间复杂度为O(1)。

虚函数是如何在C++中实现的?

虚函数通过虚表(vtbl)和虚指针(vptr)实现,确保运行时的多态性。

placement new的用途是什么?

placement new用于在特定内存地址创建对象。

🏷️

标签

➡️

继续阅读