基础知识
关键字
auto
static
隐藏
存放在静态存储区
保持变量内容的持久
默认初始值为0
C++中的类成员声明
类中静态成员变量必须在类外初始化
const
加在普通变量上
加在指针变量上
加在函数的参数和返回值上
引用和指针
定义
指针是指向变量地址的变量
引用是所引变量的别名,地址相同
在函数中传递方式
相同点和区别
相同:都可以直接修改变量,避免拷贝副本
区别:
结构体
定义方式
使用结构体变量找到其中成员用.,用结构体指针找成员用->
面试常见问题
struct和class的区别
继承关系和成员属性上,struct默认是public的,而class是privates的
没有很大区别,C++中的struct仅仅是为了兼容C
类成员函数的重载和覆盖
overload是同样的函数名不同参数
override是虚函数实现多态的过程
vector的resize和reserve区别
capacity是容器最大容量,size是当前容量,capacity动态分配
resize(x)开辟x个元素的空间,并且创建x个元素,初始值为0
reserve(x)开辟x个元素空间,但当前的size还是0
多重继承和虚函数表
每个父类都有自己的虚表
子类的成员函数被放到了第一个父类的表中
子类有覆盖时,子类虚函数表中对应父类被覆盖的函数指针位置,被替换成了子类的函数指针
new和malloc区别
new是在自由存储区申请空间,malloc是在堆上
new会调用对象的构造和析构函数,malloc只面向存储空间地址
new后面直接跟对象类型,malloc需要计算申请内存的空间大小
new没法对已分配内存进行扩充,malloc可以用realloc