C++内联函数

  内联函数是C++为了提高程序运行速度所做的一项改进,常规函数和内联函数之间的主要区别不在于编写方式,而在于C++编译器如何将它们组合到程序中。

  内联函数,顾名思义,就是有内联的函数,那么具体是什么内联呢?

  内联函数的编译代码与其他程序代码“内联”起来了。也就是说编译器将使用相应的函数代码替换函数调用。对于内联代码,程序无需跳转到另一个位置执行代码,再跳回来。因此,内联函数的运行速度比常规函数稍快,但有利就有弊,代价就是需要占用更多的内存。通俗地讲就是拿空间换时间。如果程序在10个不同的地方调用同一个内联函数,则该程序将包含该代码的10个副本。

  其实说白了就是程序员发扬用最少代码干最多事情的优良传统。程序员不想重复的写一个简单代码,就启用了调用函数,但是调用函数是要消耗时间的(系统要来回找地址,来回调),所以内联函数应运而生,这样既不用重复写简单代码,又不用消耗调用时间,但是世界是公平的,所以只能让内存这个怨种来背锅。就只能牺牲内存来换取时间和便利

好啦,不扯了,下面我们正式开始对内联函数的学习。

指定内联函数的方法只需要在函数定义处增加 inline 关键字。见代码

inline void Swap(int& x1,int& x2)
{
    int temp=x1;
    x1=x2;
    x2=temp;
}

要点:

1.要在函数定义处添加 inline 关键字,在函数声明处添加 inline 关键字虽然没有错,但这种做法是无效的,编译器会忽略函数声明处的 inline 关键字。

2.inline不建议声明和定义分离,分离会导致链接错误。因为inline被展开了,就没有地址了,链接就会找不到。

3.inline对编译器来说是一个建议,编译器会自动优化,如果1.内联函数体内有循环/递归  2.函数体内代码较多的(多余20行),编译器优化时就会忽略内联。如果程序在10个不同的地方调用同一个内联函数,则该程序将包含该代码的10个副本所以频繁调用小函数(交换)时,才用内联函数。

前面提到牺牲空间来换取时间,在C语言里也有类似的案例,在C语言里是通过来实现的。

C语言的宏:

优点:

1.增强代码的复用性。

2.提高性能。

缺点:

1.不方便调试宏(因为预编译阶段进行了替换,有时会出现优先级等问题)

2.宏使代码可读性变差,可维护性差,容易误用。

3.没有类型安全的检查。

C++有哪些技术代替宏?

1.常量定义 换用const

2.短小函数定义 换用内联函数。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

头发尚存的猿小二

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值