c++基础速刷,查漏补缺(一)

速刷知识点,可用来查漏补缺

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



遇到不会的知识点,欢迎在回复中提问,我会在回复中回答,或者另写文章具体讲解。
祝大家都能在秋招中斩获心仪的offer。

感谢阅读。
#c++##笔试##面试#
全部评论
第二个const变量是错误的,详情请看c++ primer 5th P56。应该为: 指针常量(底层const):指针所指的对象不可变 常量指针(顶层const):指针不可变
1 回复 分享
发布于 2022-09-04 10:12 河北
new和malloc,学到了,以前没这么详细的去了解
点赞 回复 分享
发布于 2022-08-18 20:42 陕西

相关推荐

最近和朋友聊天,她说了句让我震惊的话:"我发现我连周末点外卖都开始'最优解'了,一定要赶在高峰期前下单,不然就觉得自己亏了。"这不就是典型的"班味入侵"吗?工作思维已经渗透到生活的方方面面。
小型域名服务器:啊?我一直都这样啊?我还以为是我爱贪小便宜呢?每次去实验室都得接一杯免费的开水回去,出门都得规划一下最短路径,在宿舍就吃南边的食堂,在实验室就吃北边的食堂,快递只有顺路的时候才取。
点赞 评论 收藏
分享
我见java多妩媚:大外包
点赞 评论 收藏
分享
孤寡孤寡的牛牛很热情:为什么我2本9硕投了很多,都是简历或者挂,难道那个恶心人的测评真的得认真做吗
点赞 评论 收藏
分享
4 16 评论
分享
牛客网
牛客企业服务