首页 >  知识中心 >  新闻详情

内联函数的好处与不足 内联函数作用是?

来源:朵拉利品网  |  2019-07-24 20:20:38

1, 内联函数作用是?



内联函数就是指在每个使用它的地方插入全部算法,而不是把函数地址传过去
比如
inline void show(){cout<<"i am werewolf1989";}
int main(){show();return 0;}
这个小程序的main函数就等价于
int main(){cout<<"i am werewolf1989";
return 0;}

2, 内联函数与c++宏相比的优点有哪些?



函数内联
用内联取代宏代码
----------------
C++ 语言支持函数内联,其目的是为了提高函数的执行效率(速度)。
在C程序中,可以用宏代码提高执行效率。宏代码本身不是函数,但使用起来象函数。
预处理器用复制宏代码的方式代替函数调用,省去了参数压栈、生成汇编语言的CALL调用、
返回参数、执行return等过程,从而提高了速度。
使用宏代码最大的缺点是容易出错,预处理器在复制宏代码时常常产生意想不到的边际效应。
对于C++ 而言,使用宏代码还有另一种缺点:无法操作类的私有数据成员。
让我们看看C++ 的"函数内联"是如何工作的。
对于任何内联函数,编译器在符号表里放入函数的声明(包括名字、参数类型、返回值类型)。
如果编译器没有发现内联函数存在错误,那么该函数的代码也被放入符号表里。
在调用一个内联函数时,编译器首先检查调用是否正确
(进行类型安全检查,或者进行自动类型转换,当然对所有的函数都一样)。
如果正确,内联函数的代码就会直接替换函数调用,于是省去了函数调用的开销。
这个过程与预处理有显著的不同,因为预处理器不能进行类型安全检查,或者进行自动类型转换。
假如内联函数是成员函数,对象的地址(this)会被放在合适的地方,这也是预处理器办不到的。
C++ 语言的函数内联机制既具备宏代码的效率,又增加了安全性,而且可以自由操作类的数据成员。
所以在C++ 程序中,应该用内联函数取代所有宏代码,"断言assert"恐怕是唯一的例外。
assert是仅在Debug版本起作用的宏,它用于检查"不应该"发生的情况。
为了不在程序的Debug版本和Release版本引起差别,assert不应该产生任何副作用。
如果assert是函数,由于函数调用会引起内存、代码的变动,那么将导致Debug版本与Release版本存在差异。
所以assert不是函数,而是宏。

3, 在c语言中内联函数有什么作用



1.内联函数可减少cpu的系统开销,并且程序的整体速度将加快,但当内联函数很大时,会有相反的作用,因此一般比较小的函数才使用内联函数.
2.有两种内联函数的声明方法,一种是在函数前使用inline关见字,另一种是在类的内部定义函数的代码,这样的函数将自动转换为内联函数,而且没必要将inline放在函数前面.
3.内联是一种对编译器的请求,下面这些情况会阻止编译器服从这项请求.
如果函数中包含有循环,switch或goto语句,递归函数,含有static的函数.
由此可以看出,内联函数和成员函数没什么区别,区别就在于怎样加快函数的执行速度而已。

相关概念


函数

函数的定义:给定一个数集A,假设其中的元素为x。现对A中的元素x施加对应法则f,记作f(x),得到另一数集B。假设B中的元素为y。则y与x之间的等量关系可以用y=f(x)表示。我们把这个关系式就叫函数关系式,简称函数。函数概念含有三个要素:定义域A、值域C和对应法则f。其中核心是对应法则f,它是函数关系的本质特征。 函数(function),最早由中国清朝数学家李善兰翻译,出于其著作《代数学》。之所以这么翻译,他给出的原因是“凡此变数中函彼变数者,则此为彼之函数”,也即函数指一个量随着另一个量的变化而变化,或者说一个量中包含另一个量。函数的定义通常分为传统定义和近代定义,函数的两个定义本质是相同的,只是叙述概念的出发点不同,传统定义是从运动变化的观点出发,而近代定义是从集合、映射的观点出发。

 
相关新闻
内联函数的好处与不足 内联函数作用是? 07-24
内联函数与外联函数的区别 内联函数和外联函数有什么区别 07-24
内联函数定义 内联函数是什么? 07-24
内联函数何时使用 c++什么时候需要使用内联函数? 07-24
内联函数是什么 内联函数是什么? 07-24
什么时候使用内联函数 c++什么时候需要使用内联函数? 07-24
内联函数的关键字为 内联函数与普通函数的区别是什么 07-24
区分内联函数 内联函数与普通函数的区别是什么 07-24
内联函数的定义必须出现在 内联函数是什么? 07-24
内联函数与重载函数 内联函数和 普通函数 宏定义的区别 07-24
相关产品
供应 LWG-3080 频率信号发生器 函数信号源 脉冲群发生器 05-21
铝合金联轴器 06-15
滚筒减速机连接部件 联轴器 减速机配套联轴器 清江减速机联轴器 06-30
西安注册公司比注册成个体户好太多了大多数人不知道这些好处 07-19
荷兰条形码申请注册时间费用好处转让荷兰条形码备案变更续费 07-24
冰岛条形码申请注册时间费用路程材料好处冰岛条形码变更转让续费 07-24
韩国条形码申请注册时间流程 费用好处韩国条形码备案续费转让 07-24
东莞条形码注册时间短费用低好处多东莞条形码申请续展转让 07-24
注册芬兰条形码申请时间费用材料流程好处芬兰条形码续费转让变更 07-24
青岛条形码申请注册时间费用好处流程青岛条形码备案变更备案续费 07-24

大家都在看