C++:内联函数,auto关键字,基于范围的for循环,指针空值nullptr

内联函数

在C语言中比较短小并可能多次使用的函数则会把它定义为宏函数
例如,我们定义一个加法的宏函数:

#define Add(a,b) ((a)+(b))

宏函数的优点:

  1. 没有压栈开销(因为在预编译的过程中编译器会完成宏函数的替换)
  2. 可以增强复用性(比如宏常量,改动的时候只需要改动一处即可)

宏函数的缺点:

  1. 复杂,导致代码可读性差,可维护性差,容易误用
  2. 不能进行调试
  3. 没有类型安全的检查

那么在C++中如何解决这种问题呢?
在C++中用enum、const来代替宏常量。用内联函数来代替宏函数。

1.内联函数的使用(在函数前面加上inline)
inline int Add(int a,int b)
{
   
	return a+b;
}
2.内联函数的特点
  1. 内联函数是一种以空间换时间的方法,省去了调用函数时的压栈开销,在使用该函数的位置直接进行展开。
  2. 内联函数对编译器来说只是一个建议,如果函数代码较短时,编译器会接受你的建议,如果函数代码较长或者是循环、递归等函数,编译器会自动优化。
  3. 内联函数不可以声明和定义分离,这样会导致链接错误,因为内联函数没有地址,它只是在使用的地方直接展开。

auto关键字(C++11)

auto是C++11里引入的新型语法,它是自动推导变量的类型
例如:

int a=10;
auto ra=a;

这里编译器会根据a的类型自动将auto推导为int,因此ra的类型也是int。
输出ra的类型可以用下方语句:(输出为

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值