宏的缺点
在C语言有宏这么一个概念,主要是为了方便使用函数
但是宏有一些缺点
内联函数
为了避免宏函数这种缺点C++就引入了内联函数,一般函数使用时要建立堆栈,但内联函数不用、
内联函数的特性是以空间换时间,并不是占用内存空间,而是使用内联函数后编译出来的可执行程序会变大
内联函数不建议声明和定义分离,这样会导致链接错误
内联函数调用的地方都是直接展开的,所以建议内联函数直接在.h文件里定义就行了
这就是内联函数
auto关键字
让编译器去自动推导类型
auto的实际价值是简化代码,当类型很长时可以让编译器自行推导
这里b的类型就是由a推导出来的,a是int类型,所以推导出来的b的类型就也是int类型
注:C语言里的 typedef().name()就可以去获取变量的类型
auto还有其他用法,就像这样。第一行的意思是c被限定了只能是个指针,第二行的意思就是d只能是a的别名
而且auto也可以一行声明多个变量,不过变量类型要相同
auto也不能作形参,不能声明数组
语法糖——(范围for)
这个是c++里的语法糖,这样使用for循环可以使用较少的代码达成目的
他的原理是依次自动取数组中数据赋值给e对象,自动判断结束
注:这里的e也可以换成其他值
空指针——nullptr
在一些极端情况下,C++里的NULL会被定义成0
在这段代码里可以看到系统把NULL认定成了int类型
所以NULL在C++里并非全部适用,所以在c++里就引用关键字nullptr去替代NULL