inline的使用

本文详细介绍了C++中的inline函数,包括其作用、好处、与宏的区别、类中inline函数的使用方式以及慎用原因。inline函数旨在减少函数调用开销,通过在编译时代码展开实现,但可能导致代码膨胀。了解何时适当使用inline至关重要,因为它并非性能提升的万能解决方案。

目录

 

1.inline函数的介绍:

1.1.引入inline相关知识:

         1.2.使用inline的好处:

2.inline函数和宏的区别:

3.如何使用类的inline函数:

  3.1.在类中定义这种函数:

  3.2.在类外定义前加inline关键字:

  3.3.此外含有一些规则需注意:

  3.4.inline 是一种“用于实现的关键字”

4.慎用inline

5.小结


1.inline函数的介绍:

 

1.1.引入inline相关知识:

1.Inline:

在c++中,用户可以创建实际上不调用的短函数,它们的代码在每次调用的程序行得到扩展,这个过程类似于使用类函数的宏,为了使一个函数在程序行内进行代码扩展而不被调用,只要在函数前面加上inline关键字即可

Inline 对于编译器来说是一种请求,而不是命令

在类声明内定义短函数是有可能的,如果一个函数是在类声明内定义的,它将被自动转换为内联函数,没有必要在函数声明之前加上inline 关键字,构造函数和析构函数也可以是内联函数。                                                           from:《c/c++参考大全》

2.先讲下函数调用的具体流程:

常规函数调用使程序跳到另外一个地址:函数地址,并在函数结束时返回

具体实现:执行到函数调用指令时,程序将在函数调用时立即存储该指令的内存地址,并将函数参数复制到堆栈,跳到标记函数起点的内存单元,执行函数代码,然后调回到地址被保存的指令处,来回跳跃并记录位置:普通函数调用时需要一定的开销。

C++中的内联提供了另一种选择,编译器将使用相应的函数代码替换函数调用,对于内联代码,程序无需跳到另一个位置执行代码,然后再跳回来,所以内联函数的运行速度比常规函数快,但是需要占用更多的内存

****如果程序在10个不同的地方调用同一个内联函数,则该程序将包含该函数的10个代码拷贝。     from:《c++primer plus》

1.2.使用inline的好处:

引入inline关键字的原因

在c/c++中,为了解决一些频繁调用的小函数大量消耗栈空间(栈内存)的问题,特别的引入了inline修饰符,表示为内联函数。

栈空间就是指放置程序的局部数据(也就是函数内数据)的内存空间。

在系统下,栈空间是有限的,假如频繁大量的使用就会造成因栈空间不足而导致程序出错的问题,如,函数的死循环递归调用的最终结果就是导致栈内存空间枯竭。

例子:

#include <stdio.h>
//函数定义为inline即:内联函数
inline char* dbtest(int a) {
    return (i % 2 > 0) ? "奇" : "偶";
} 

int main()
{
   int i = 0;
   for (i=1; i < 100; i++) {
       printf("i:%d    奇偶性:%s /n", i, dbtest(i));    
   }
}

上面的例子就是标准的内联函

评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值