理由:
不能依靠编译器去优化内联函数。40年前我们承诺编译器比人类优化的更好。但是我们还在等待。把类内部的成员函数标注成inline可以让编译器优化的更好。
例子:
inlinestringcat(conststrings,conststrings2){turns+s2;}例外:
不要把内联函数放在还没稳定的接口。内联函数是一种ABI。
constexpr默认是inline
注意:
类定义内的成员函数默认为inline
例外:
函数模板(包括类模板的成员函数AT::function()以及成员函数模板A::functionT()一般定义在头文件中,所以是inline函数。
强化:
超过3个语句的函数,如果声明为inline的需要注意下。可能要声明成非inline的。
C++核心指南是由C++创始人BjarneStroustrup和ISO/ANSIC++标准委员会秘书HerbSutter领导开发的关于如何正确高效使用C++的在线文档。就像C++语言本身一样,这些指南是许多组织中许多人多年讨论和设计的结果。
C++核心指南是由C++创始人BjarneStroustrup和ISO/ANSIC++标准委员会秘书HerbSutter领导开发的关于如何正确高效使用C++的在线文档。就像C++语言本身一样,这些指南是许多组织中许多人多年讨论和设计的结果。
kimim