宏和内联函数数和外联函数有什么区别

下次自动登录
现在的位置:
& 综合 & 正文
【C++ Primer】内联函数和外联函数
成员函数:在类的定义中规定在类体中说明的函数作为类的成员,称为成员函数。
前面讲过一般的成员函数,它是根据某种类的功能的需要来定义的。又讲述了一些特殊的成员函数:构造函数、析构函数、拷贝初始化构造函数等。还有一些成员函数后面还会介绍。 成员函数除了说明和定义在类中之外,还有些什么特性,这是本节讨论的问题。
二、内联性和外联函数
类的成员函数可以分为内联函数和外联函数。
1)内联函数是指那些定义在类体内的成员函数,即该函数的函数体放在类体内。
2)外联函数是声明在类体内,定义在类体外的成员函数。外联函数的函数体在类的实现部分。
内联函数在调用时不是像一般的函数那样要转去执行被调用函数的函数体,执行完成后再转回调用函数中,执行其后语句,而是在调用函数处用内联函数体的代码来替换,这样将会节省调用开销,提高运行速度。
内联函数与带参数的宏定义的代码效率是一样的,但是内联函数要优于宏定义,因为内联函数遵循函数的类型和作用域规则,它与一般函数更相近,在一些编译器中,一旦关上内联扩展,将与一般函数一样进行调用,调试比较方便。
外联函数变成内联函数的方法很简单,只要在函数头前面加上关键字inline就可以了。
#include &iostream&
A(int x, int y) //内联函数
int a() //内联函数
int b() //内联函数
//inline定义内联函数
inline int A::c()
return a()+b();
inline int A::d()
return c();
int main()
int I=m.d();
cout&&"d()return:"&&I&&
输出结果: d()return:8
说明:类A中,直接定义了3个内联函数,又使用inline定义了2个内联函数。内联函数一定要在调用之前进行定义,并且内联函数无法递归调用。区别就在于,运行时侯的效率与定义的方法不同。
引用网络精辟结论:
内联函数的代码编译后会直接放在调用点的函数体内, 从而使得代码增大, 但是效率提高了(减少了跳转, 参数传递以及保存调用函数寄存器状态的过程).
对外联函数的调用会在调用点生成一个调用指令(在X86中是call), 函数本身不会被放在调用者的函数体内, 所以代码减小, 但效率较低.
所以一般只有当函数体较小的情况下才声明为内联函数
【上篇】【下篇】博主最新文章
博主热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)已解决问题
成员函数有什么特征?什么是内联函数?什么是外联函数?
浏览次数:1457
用手机阿里扫一扫
最满意答案
成员函数特征:可以访问类中任何成员。此外,成员函数可以像全局函数一样:(1)重载,(2)设置为内联函数,(3)设置具有默认值。&内联函数就是编译时函数代码直接嵌入函数调用点,以空间换时间,提高程序运行效率;外联函数是一般意义的函数或子程序(独立的可调用程序块)。&&在类体中定义的成员函数就是内联函数;在类体外定义的成员函数是外联函数,但可以用inline关键词定义为内联函数。
答案创立者
以企业身份回答&
正在进行的活动
生意经不允许发广告,违者直接删除
复制问题或回答,一经发现,拉黑7天
快速解决你的电商难题
店铺优化排查提升2倍流量
擅长&nbsp 店铺优化
您可能有同感的问题
扫一扫用手机阿里看生意经
问题排行榜
当前问题的答案已经被保护,只有知县(三级)以上的用户可以编辑!写下您的建议,管理员会及时与您联络!
server is ok天极传媒:天极网全国分站
您现在的位置: >>
C++ 成员函数的特性
  我们已经知道什么是成员函数了,它是根据某种类的功能是需要来定义的。而构造函数、析构函数、拷贝初始化构造函数等都属于特殊的成员函数。成员函数除了说明和定义的类中之外,还有些什么特性呢?  内联函数和外联函数  类的成员函数可以分为内联函数和外联函数。内联函数是指那些定义在类体内的成员函数,即该函数的函数体放在类体内。而说明在类体内,定义在类体外的成员函数叫外联函数。外联函数的函数体在类的实现部分。  内联函数在调用时不是像一般函数那样要转去执行被调用函数的函数体,执行完成后再转回调用函数中,执行其后语句,而是在调用函数处用内联函数体的代码来替换,这样将会节省调用开销,提高运行速度。  内联函数与带参数的宏定义进行下比较,它们的代码效率是一样,但是内联欢函数要优于宏定义,国为内联函数遵循的类型和作用域规则,它与一般函数更相近,在一些编译器中,一旦关上内联扩展,将与一般函数一样进行调用,高度比较方便。  有关内联函数在使用时注意的事项,请参考本栏目“内联函数”一文。  外联函数变成内联函数的方法很简单,只要在函数头前面加上关键字inline就可以了。  重载性  成员函数可以进行重载,前面介绍过构造函数可以重载,而析构函数不能重载,它们是特殊的成员函数。一般的成员函数都可以重载。  有关函数重载的详细介绍,请参考本栏目“函数重载”一文。  设置参数的缺省值  成员函数可以被设置参数的缺省值。一般的成员函数和构造函数都可以被设置参数的缺省值。  关于设置函数参数缺省值的方法和应该注意的事项,请参考本栏目“浅谈C++函数的参数”一文。
(作者:-- 责任编辑:)
天极新媒体&最酷科技资讯扫码赢大奖
* 网友发言均非本站立场,本站不在评论栏推荐任何网店、经销商,谨防上当受骗!
笔记本手机数码家电博客访问: 1122883
博文数量: 358
博客积分: 8137
博客等级: 中将
技术积分: 5124
注册时间:
分类: C/C++ 17:51:02
我们已经知道什么是成员函数了,它是根据某种类的功能是需要来定义的。而构造函数、析构函数、拷贝初始化构造函数等都属于特殊的成员函数。成员函数除了说明和定义的类中之外,还有些什么特性呢?  内联函数和外联函数  类的成员函数可以分为内联函数和外联函数。内联函数是指那些定义在类体内的成员函数,即该函数的函数体放在类体内。而说明在类体内,定义在类体外的成员函数叫外联函数。外联函数的函数体在类的实现部分。  内联函数在调用时不是像一般函数那样要转去执行被调用函数的函数体,执行完成后再转回调用函数中,执行其后语句,而是在调用函数处用内联函数体的代码来替换,这样将会节省调用开销,提高运行速度。  内联函数与带参数的宏定义进行下比较,它们的代码效率是一样,但是内联欢函数要优于宏定义,国为内联函数遵循的类型和作用域规则,它与一般函数更相近,在一些编译器中,一旦关上内联扩展,将与一般函数一样进行调用,高度比较方便。  外联函数变成内联函数的方法很简单,只要在函数头前面加上关键字inline就可以了。  重载性  成员函数可以进行重载,前面介绍过构造函数可以重载,而析构函数不能重载,它们是特殊的成员函数。一般的成员函数都可以重载。  设置参数的缺省值  成员函数可以被设置参数的缺省值。一般的成员函数和构造函数都可以被设置参数的缺省值。
阅读(354) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
请登录后评论。

我要回帖

更多关于 内联函数 的文章

 

随机推荐