- C++多态的实现?
- (纯)虚函数的作用?
- 虚函数用于实现多态,这点大家都能答上来但是虚函数在设计上还具有封装和抽象的作用。比如抽象工厂模式。
- 动态绑定是如何实现的?
- 静态多态和动态多态。静态多态是指通过模板技术或者函数重载技术实现的多态,其在编译器确定行为。动态多态是指通过虚函数技术实现在运行期动态绑定的技术。
- 虚函数表
- 虚函数表是针对类的还是针对对象的?同一个类的两个对象的虚函数表是怎么维护的?
- 编译器为每一个类维护一个虚函数表,每个对象的首地址保存着该虚函数表的指针,同一个类的不同对象实际上指向同一张虚函数表。
- 纯虚函数如何定义,为什么对于存在虚函数的类中析构函数要定义成虚函数
- 析构函数能抛出异常吗
- 构造函数和析构函数中调用虚函数吗?
- 指针和引用的区别
- 指针与数组千丝万缕的联系
- 智能指针是怎么实现的?什么时候改变引用计数?
- 构造函数中计数初始化为1;
- 拷贝构造函数中计数值加1;
- 赋值运算符中,左边的对象引用计数减一,右边的对象引用计数加一;
- 析构函数中引用计数减一;
- 在赋值运算符和析构函数中,如果减一后为0,则调用delete释放对象。
- share_prt与weak_ptr的区别?
- C++四种类型转换:static_cast, dynamic_cast, const_cast, reinterpret_cast
- 内存对齐的原则
- 内联函数有什么优点?内联函数与宏定义的区别?
- C++内存管理
- STL里的内存池实现
- STL里set和map。红黑树的特点?
- STL里的其他数据结构和算法实现也要清楚
这个问题,把STL源码剖析好好看看,不仅面试不慌,自己对STL的使用也会上升一个层次。 - 必须在构造函数初始化式里进行初始化的数据成员有哪些
- 模板特化
- 定位内存泄露
(1)在windows平台下通过CRT中的库函数进行检测;
(2)在可能泄漏的调用前后生成块的快照,比较前后的状态,定位泄漏的位置
(3)Linux下通过工具valgrind检测 - 手写strcpy,memcpy,strcat,strcmp等函数
- itoa与atoi