c++基础速刷,查漏补缺(一)
速刷知识点,可用来查漏补缺
指针和引用
指针:存放某个对象的地址
引用:变量的别名,从一而终,不可变,必须初始化
const变量
指针常量(底层const):指针所指的对象不可变
常量指针(顶层const):指针不可变
define和typedef的区别
define:
- 只是简单的字符串替换,没有类型检查
- 是在编译的预处理阶段起作用
- 可以用来防止头文件重复引用
- 不分配内存,给出的是立即数
typedef
- 有对应的数据类型,需要进行判断
- 在编译、运行的时候起作用
- 在静态存储区中分配空间
define和inline的区别
define:定义预编译时处理的宏,只是字符串替换,无类型检查,不安全。
inline:直接将函数体插入被调用的地方,减少了压栈,跳转和返回的操作。
内联函数是一种特殊的函数,会进行类型检查。
override和 overload
override:重写,覆盖
overload:通过不同的参数类型,不同的参数个数,不同的参数顺序进行重载。访问权限,返回类型,抛出的异常不进行重载
总结:重写只有一个,重载是将类似的函数用同一个名字,仅通过参数区分
多态是为了避免在父类中进行过多的重载
new和malloc
- new分配失败抛出异常,malloc返回nullptr
- new无需指定内存块的大小,malloc需要显示指出所需内存的尺寸
- new和delete可以重载,malloc和free不能重载
- new会调用对象的构造析构函数,malloc不会
- new是运算符,malloc是库函数
constexpr:常量表达式
const:只读
constexpr的好处:确保某些数据无法被修改;部分场景编译器可以对constexpr做优化;比宏更安全,开销更少。
volatile
作用:要求编译器读取数据时,每次都从内存中重新装载内容,而不是从寄存器中拷贝
extern
定义:声明在函数或者文件外定义的全局变量
static
作用:实现多个对象之间数据的共享和隐藏;默认初始化为0
前置++与后置++
前置++返回左值(引用),后置++返回右值(临时对象)
std::atomic
作用:为了线程安全,使得原本线程不安全的语句变成“原子”语句,不再可分,从而实现线程安全。
遇到不会的知识点,欢迎在回复中提问,我会在回复中回答,或者另写文章具体讲解。
祝大家都能在秋招中斩获心仪的offer。
感谢阅读。
#c++##笔试##面试#