CppCoreGuidelines F.5 把时延敏感的小函数声明为 inline
08 April 2022
理由:
不能依靠编译器去优化内联函数。40 年前我们承诺编译器比人类优化的更好。但是我们还在等待。把类内部的成员函数标注成 inline
可以让编译器优化的更好。
例子:
inline string cat(const string& s, const string& s2) { return s + s2; }
例外:
不要把内联函数放在还没稳定的接口。内联函数是一种 ABI。
constexpr
默认是 inline
注意:
类定义内的成员函数默认为 inline
例外:
函数模板(包括类模板的成员函数 A<T>::function()
以及成员函数模板
A::function<T>()
一般定义在头文件中,所以是 inline
函数。
强化:
超过3个语句的函数,如果声明为 inline
的需要注意下。可能要声明成非 inline
的。