[c++]内联函数

========================内联函数======================
频繁调用小函数使得函数调用的开销占比重极大,不适用函数而直接在程序中完成同样功能的代码又会降低程序的可读性
内联函数解决了这个矛盾
1.内联函数的声明必须在调用之前!
例如
#include<iostream>
using namespace std;
bool isnumber(char ch); //此处没有声明为 inline
int main()
{
char c;
while(cin >> c && c != '\n' )
{
if(isnumber(c))
{
cout << "digit" << endl;
}
}

return 0;
}
inline bool isnumber(char ch)
{
return ch >= '0' && ch <= '9' ? 1 : 0;
}
上述代码中的isnumber并没有内联 是一个错误内联的示例 编译器在执行时 该函数被当做普通函数对待.

内联函数的函数体应当尽量的小 不应当出现复杂的控制语句 比如switch或者while,如果函数中出现这些复杂的控制语句 那么编译器将会无视内联声明 直接进行普通的函数调用流程(递归也无法内联)
经验上来讲 一般适合1到5行的小函数
内联函数的一般使用场合为:
1.函数体适当小,这样就使得嵌入工作容易进行,不会破坏原调用主体
2.程序中特别是在循环中反复执行该函数 这样就使得嵌入的效率更高
3.程序并不多出出现该函数调用,这样就使嵌入工作量相对较少 代码量也不会剧增.
==========================================================================

posted @ 2015-10-28 19:32 Smalldy 阅读(...) 评论(...) 编辑 收藏