内联函数 声明: inline
const string &shorterString(const string &s1,const string &s2)
{
return s1.size() < s2.size ? s1 :s2;
}
把这样一个小操作定义成函数
好处:
阅读理解程序更容易;
方便修改;
确保程序统一的行为 ,保证每个测试都以相同的方式执行;
函数可以重用,不必重写代码。
坏处:
调用函数比直接执行表达式要慢得多。
调用函数要先保存寄存器,并在返回时恢复;复制实参;程序要转向一个新的位置执行,程序开销大。
为解决上述问题,提出了内联函数,在函数调用处 内联的展开。
inline const string &shorterString(const string &s1,const string &s2)
{
return s1.size() < s2.size ? s1 :s2;
}
在函数调用时
cout<< shortString(s1,s2)<<endl;
将展开为
cout<<(s1.size <s2.size ? s1 : s2)<<endl;
从而消除了调用函数的额外开销。
内联函数要在头文件中声明,要对编译器是可见的。
内联函数只适用于短小的,经常被调用的函数,大的复杂的函数不适合。