将函数指定为内联函数(inline),通常就是将它在每个调用点上“内联地”展开。假设我们把shorterString函数定义成内联函数,则如下调用
cout << shorterString(s1, s2) << endl;
将在编译过程中展开成类似于下面的形式
cout << (s1.size() < s2.size() ? s1 : s2) << endl;
从而消除了shorterString函数的运行时开销。
在shorterString函数返回类型前面加上关键字inline,这样就可以将它声明成内联函数了:
//内联版本:寻找两个string对象中较短的那个
inline const string &shorterString(const string &s1, const string &s2)
{
return s1.size() < s2.size() ? s1 : s2;
}
注意:
1、把内联函数放入头文件;
2、内联说明只是向编译器发出的一个请求,编译器可以选择忽略这个请求。递归函数、大函数不太可能在调用点内敛展开。