1、内联函数
1.1概念
在c++中用inline修饰的函数就是内联函数,c++编译器编译时会在调用内敛函数的地方展开,没有压栈的开销。
当函数代码行数较少(1-10)或被频繁调用(10W次)的时候,在调用的地方展开会大大减小开销
c语言是怎么解决这个问题的呢?
宏函数——》 优点:提高效率
缺点:1、可读性差 2、没有类型检查 3、不方便调试
于是就有了c++中的内联函数
1.2内联函数的注意
1)inline是一种以空间换时间的做法,如果代码很长或者有循环递归不要使用内联
2)inlin对编译器来说只是一个建议,编译器会根据自己的编译规则来决定是否展开
3)inline不建议声明和定义分开,因为如果编译器在函数调用的地方将声明展开,就不会生成函数地址,链接的时候找不到函数的定义
2、auto自动推导类型
2.1基础用法
auto b =&a;与autopb=&a;基本相同,但是加上表示等号右边只能传一个指针类型,引用同理。
2.2范围for
自动判断,自动迭代
2.3auto不能自动推导的场景
1)auto不能作为函数的参数类型
2)auto不能声明数组
3、指针空值问题
在c语言的语法中 NULL定义为0这就导致了类型问题
借用函数重载来展示
所以c++中定义空指针为nullptr