- C++类型转换有哪些?
- C++虚函数的原理
- 智能指针有哪些?应用场景?
- select, poll, epoll的原理、区别、优缺点
- std::sort的底层实现
- lamda表达式的本质?
- std::vector的size和capacity,扩容机制
- 往std::vector中用push_back添加n个元素,总时间复杂度是多少?
- std::vector怎么缩容?
- C++的完美转发是什么?
- 删除和新增STL容器中的元素,迭代器会失效吗?
- STL有哪些组件?
- 介绍一下仿函数,它有什么作用?
- STL容器是线程安全的吗?
- 类的深拷贝和浅拷贝
- 如何实现一个简单的“写时拷贝”类?
- malloc和free是线程安全的吗?
- 什么是静态链接和动态链接?分别是如何链接的?
- 程序运行时内存模型?
- std::unordered_map和std::map的底层实现?std::map元素有序吗?
- std::unordered_map查询的时间复杂度?什么时候退化成O(n)?怎么优化?
- std::unordered_map的负载因子是什么?
- go有个关键字defer,用于在函数结束时自动调用,C++如何实现类似功能?
- STL中的内存分配器是怎么实现的?
- std::move是什么?怎么实现?std::forward是什么?怎么实现(参见C++ primer)
- auto和decltype的作用和区别?
- new和malloc区别?
- C++如何避免内存泄漏?如何排查?
- 构造函数和析构函数可以定义为虚函数吗?析构函数什么时候需要定义为虚函数?
- 构造函数和析构函数可以抛出异常吗?
- 构造函数中能调用虚函数吗?会发生多态吗?
- 频繁地申请和释放堆区空间,有什么坏处?怎么解决?
- if else 语句和 switch 语句哪个性能更好?
- 以下代码会发生什么?
struct Logger {
void log(const string &msg) {
cout << msg << endl;
}
}
int main() {
Logger *p = nullptr;
p->log("hello"); // 会发生空指针异常吗?输出什么?
}
#投票#