C++(7)C++中内联函数
以inline
修饰的函数叫做内联函数,编译时C++
编译器会在调用内联函数的地方展开,没有函数压栈的开销,内联函数提升程序运行的效率
内联函数
在第一次调用之前必须进行完整的定义,否则编译器将无法知道应该插入什么代码(inline必须和函数定义放在一起
,才能成为内联函数,仅将inline放在声明前是不起作用的)- 内联函数是
以空间换时间
的做法,省去了调用函数的开销
.所以代码很长或者有循环/递归的函数不适宜
使用内联- inline对编译器来说是
一个建议
,编译器可以忽略
这个建议- 定义在
类内的成员函数
默认定义为内联函数- 对内联函数
不能进行
异常接口声明
,就是不能声明可能抛出的异常
C++建议以const/枚举/内联去替代宏
宏的优点
- 增强代码的复用性
- 提高性能
宏的缺点
- 不方便调试宏(因为预编译阶段进行了替换)
- 导致代码可读性差,可维护性差,容易误用
- 没有类型安全的检查