【c++基础】c++常见面试问题

1、const

2、static

3、volatile

4、extern

5、new & malloc

6、delete & delete[]

7、strlen & sizeof

8、内存对齐

9、零值比较

10、指针和引用的区别

11、指针与数组

12、指针类型问题

13、智能指针是怎么实现的?什么时候改变引用计数?

构造函数中计数初始化为1;
拷贝构造函数中计数值加1;
赋值运算符中,左边的对象引用计数减一,右边的对象引用计数加一;
析构函数中引用计数减一;
在赋值运算符和析构函数中,如果减一后为0,则调用delete释放对象。
share_prt与weak_ptr的区别?

14、c++多态性和虚函数表

C++多态的实现?
虚函数的作用?
虚函数用于实现多态,这点大家都能答上来但是虚函数在设计上还具有封装和抽象的作用。比如抽象工厂模式。
动态绑定是如何实现的?
静态多态和动态多态。静态多态是指通过模板技术或者函数重载技术实现的多态,其在编译器确定行为。动态多态是指通过虚函数技术实现在运行期动态绑定的技术。
虚函数表
虚函数表是针对类的还是针对对象的?同一个类的两个对象的虚函数表是怎么维护的?
编译器为每一个类维护一个虚函数表,每个对象的首地址保存着该虚函数表的指针,同一个类的不同对象实际上指向同一张虚函数表。
纯虚函数如何定义,为什么对于存在虚函数的类中析构函数要定义成虚函数
析构函数能抛出异常吗
构造函数和析构函数中调用虚函数吗?

内联函数有什么优点?内联函数与宏定义的区别?
C++内存管理
STL里的内存池实现
STL里set和map是基于什么实现的。红黑树的特点?
STL里的其他数据结构和算法实现也要清楚
这个问题,把STL源码剖析好好看看,不仅面试不慌,自己对STL的使用也会上升一个层次。
必须在构造函数初始化式里进行初始化的数据成员有哪些
模板特化
定位内存泄露
(1)在windows平台下通过CRT中的库函数进行检测;
(2)在可能泄漏的调用前后生成块的快照,比较前后的状态,定位泄漏的位置
(3)Linux下通过工具valgrind检测
手写strcpy,memcpy,strcat,strcmp等函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值