- const string &shorterString(const string &s1, const string &s2)
- {
- return s1.size() < s2.size() ? s1 : s2;
- }
看到以上这个函数,我就觉得就一条语句,为何要写成一个函数呢?
C++ Primer中的解释是:阅读和理解容易;容易修改;确保统一;可以重用;
同时出现另一个问题,就是机器调用函数要做很多工作;
所以引出“内联函数”,意思是,在程序中的调用点上就很#define一样展开。
如设shorterString为内联函数,则调用:
- cout << shorterString(s1, s2) << endl;
在编译时展开:
- cout << (s1.size() < s2.size() ? s1 : s2) << endl;
从而消除了写成函数的额外执行开销。
- inline const string
- shorterString( const string &s1, const string &s2)
- {
- return s1.size() < s2.size() ? s1 : s2;
- }