C++面试重在考察问题定位能力、工程意识与避坑经验,核心聚焦内存管理、面向对象、指针引用、类型转换与const四大模块。

面试官问C++,不是考你背了多少语法,而是看你能多快定位问题本质、有没有工程意识、能不能避开常见坑。下面这些是真实高频出现的问题,按实际考察逻辑归类,不堆砌、不罗列。
内存管理:栈、堆、智能指针怎么用才安全
栈由系统自动管理,函数结束就释放,适合小对象和临时变量;堆由程序员控制,用 new/delete 或 malloc/free 申请,但必须配对释放——漏掉就是内存泄漏,重复释放就是未定义行为。
智能指针是重点:
- unique_ptr:独占所有权,不能拷贝,只能移动,析构时自动 delete;
- shared_ptr:共享所有权,带引用计数,计数归零才释放;注意循环引用——两个对象互相 hold 对方的 shared_ptr,计数永远不为 0;这时得用 weak_ptr 打破循环;
-
不要混用 new 和 shared_ptr:比如
shared_ptr<int>(new int(42))</int>是 OK 的,但int* p = new int(42); shared_ptr<int> sp(p);</int>就危险——万一别人也 delete p,就崩了。
面向对象:虚函数、多态、析构函数为什么必须虚
虚函数是运行时多态的基础。父类指针指向子类对象时,调用虚函数能走到子类实现,靠的是虚函数表(vtable)和虚表指针(vptr)。
立即学习“C++免费学习笔记(深入)”;
关键细节:
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
还木有评论哦,快来抢沙发吧~