C++ 内联函数
2016-07-04 17:40
267 查看
一、概括
当程序执行函数调用时,系统要建立栈空间,保护现场,传递参数以及控制程序执行的转移等等,这些工作需要系统时间和空间的开销。有些情况下,函数本身功能简单,代码很短,但使用频率却很高,程序频繁调用该函数所花费的时间却很多,从而使得程序执行效率降低。
为了提高效率,一个解决办法就是不使用函数,直接将函数的代码嵌入到程序中。但这个办法也有缺点,一是相同代码重复书写,二是程序可读性往往没有使用函数的好。
为了协调好效率和可读性之间的矛盾,C++提供了另一种方法,即定义内联函数,方法是在定义函数时用修饰词inline。
二、例子
# include <iostream.h>
inline IsNumber(char ch)
{
return ch>=′0′&&ch<=′9′?1:0;
}
void main()
{
char ch;
while(cin.get(ch), ch!= ′\n′)
{
if (IsNumber(ch)) cout<<″是数字字符 ″<<endl;
else cout<<″不是数字字符 ″<<endl;
}
} //因使用频度很高,说明为内联函数。
当程序执行函数调用时,系统要建立栈空间,保护现场,传递参数以及控制程序执行的转移等等,这些工作需要系统时间和空间的开销。有些情况下,函数本身功能简单,代码很短,但使用频率却很高,程序频繁调用该函数所花费的时间却很多,从而使得程序执行效率降低。
为了提高效率,一个解决办法就是不使用函数,直接将函数的代码嵌入到程序中。但这个办法也有缺点,一是相同代码重复书写,二是程序可读性往往没有使用函数的好。
为了协调好效率和可读性之间的矛盾,C++提供了另一种方法,即定义内联函数,方法是在定义函数时用修饰词inline。
二、例子
# include <iostream.h>
inline IsNumber(char ch)
{
return ch>=′0′&&ch<=′9′?1:0;
}
void main()
{
char ch;
while(cin.get(ch), ch!= ′\n′)
{
if (IsNumber(ch)) cout<<″是数字字符 ″<<endl;
else cout<<″不是数字字符 ″<<endl;
}
} //因使用频度很高,说明为内联函数。
相关文章推荐
- pair (c++)
- C++ 根据扩展名获取文件图标、类型
- C++根据扩展名获取文件图标、类型
- [置顶] 微信抢红包的算法实现(C++)
- 用C++实现简易的文本编辑器
- 声明类 之后定义类函数 注意析构函数
- ZJUT-OJ Password Intercept and capture
- Windows ,获取硬盘物理序列号(VC++)
- 一段C语言和汇编的对应分析,揭示函数调用的本质
- [置顶] C语言变参函数的实现 参考代码
- C++ 抽象类二(抽象类的基本语法)
- C预处理器和C库
- c++ zbar opencv 二维码识别
- 【c++程序】十六进制转换十进制
- C++检测一个文件是否存在
- Boost之字符串
- C++之类和对象的使用(三)
- C语言5种存储区域
- C、C++获取文件大小(占用字节数)
- C++ 带默认形参值的函数