这两天有点忙耽搁了,抱歉!!!
这个博客系列会分为C++ STL-面经、常考公式推导和SLAM面经面试题等三个系列进行更新,基本涵盖了自己秋招历程被问过的面试内容(除了实习和学校项目相关的具体细节)。在知乎也会同步更新(lonely-stone)。
关于高频面试题和C++ STL面经,每次我会更新10个问题左右,每次更新过多,害怕大家可能看了就只记住其中几个点。(在个人秋招面试过程中,面试到后面,发现除了个人项目和实习经历外,个人所记录的内容基本能涵盖面试官能问到的)
(另外个人才疏学浅,如果所分享知识中出现错误,请大家指出,避免误导其他人)
虚函数相关
1. 虚函数与多态
- 虚函数和多态虚函数主要解决了什么问题?
- 虚函数主要是用来实现多态和多重继承的,没有虚函数理论上也可以实现多态,但比较麻烦
- 虚函数的目的是在基类指针指向派生类的时候还能正确调用跑派生类中实现的功能
- 具体实现说明
- 只需将基类中的成员函数声明为virtual就行
- 基类中的析构函数必须为虚函数,否则会出现对象释放错误
- 虚函数的使用将导致类对象占用更大的内存空间。(因为:编译器给每一个包括虚函数的对象添加了一个隐藏成员—指向虚函数表的指针也叫虚函数指针。虚函数表—virtual fuction table 包含了虚函数的地址,由所有拥有虚函数的对象共享。当派生类重新定义虚函数时,则将该函数的地址添加到虚函数表中)无论一个类对象中定义了多少个虚函数,虚函数指针只有一个。相应地,每个对象在内存中的大小要比没有虚函数时大4个字节(不包括虚析构函数)。
- 子类重写(覆盖)虚函数的规则
- 虚函数在子类和父类中的访问权限可以不同
- 基类与派生类的虚函数名与参数列表相同。且函数返回值有以下要求:
- 如果虚函数的返回值类型是基本数据类型:返回值类