1.讲一下虚函数(常问)
如果不了解虚函数的概念可以不说,重点要把虚函数表这个概念讲明白。
像之前提到的动态多态就是通过虚函数实现的,虚函数底层通过虚函数表来找到相应的函数。
含有虚函数的会多一个变量用来存储虚函数表,因此一个含有虚函数且不具备任何变量的
类大小是4。这点不要忘记。
下面这篇博客就很不错
重点需要关注虚函数表内存储顺序以及相关概念。
虚函数详解
2.构造函数和析构函数可以为虚函数吗
构造函数不行,析构函数可以而且在作为基类时虚析构函数是必须的
调用构造函数才会分配空间,不分配空间就没地方存虚函数表,因此虚构造函数会存在冲突。
而虚析构函数作为父类可以让子类调用子类本身的析构函数时能正确调用父类的析构函数。
3.C++可以有空类吗?那大小是多少
可以,空类大小为1,C++标准不允许一个对象(当然包括类对象)的大小为0。
因为new不能申请0个空间,同时防止sizeof()运算符得到0发生运算错误。
4.引用和指针的区别
引用底层是指针,因为必须初始化且不可更改所指目标,所以更加安全。
(当然不止这些)
5.结构体和类的区别
6.谈一下new/delete和malloc/free
7.纯虚函数是什么
8.const和static
假设有个类T 传参const &T ,&T, T的区别一定要清楚
9.常量指针指针常量 函数指针指针函数分别是什么
10.空指针野指针是什么
PS:4-10都是关于C与C++比较和C++基础知识(不深入理解也该知道的知识)部分
有关C/C++的面试知识不给链接了,CSDN关键词C++面试即可。
11.inline关键字了解吗,inline除了制作内联函数还可以干什么?
还可以用作简单的宏函数,比如max,min,swap等。
12.防止头文件重引用有什么办法
#ifndef 和#program once,两者区别有啥?
13.const int a = 10,a可以当作宏吗
const可以当宏用,两者区别有啥?
14.四种类型转换讲一下
15.volatile 和 extern C了解吗
PS:C++基础知识其实很简单,难得是C++11的底层和内存管理,这部分我觉得和操作系统关系更大,因此放到操作系统后面整理。



