从软件工程的立场来看,把程序通过一组函数来实现是不错的方法,但是函数调用涉及执行时间开销。
C++提供的内联函数(inline function)可以减少函数调用的开销——特别是对于小函数。但是会增加程序尺寸。
打个比方:每一处内联函数的调用都要复制代码,将使程序的总代码量增大,消耗更多的内存空间。
即:以代码膨胀(复制)为代价
#include <iostream>
using namespace std;
inline double cube(const double side) //cube是这里的内联函数,关键字const告诉编译器函数不修改变量side的值
{
return side*side*side;
}
int main()
{
double sideValue;
cout<<"请输入立方体的长:";
cin>>sideValue;
cout<<"立方体边长和体积:"<<sideValue<<" "<<cube(sideValue)<<endl;
}
利用const限定词增强最小特权原则。使用最小特权原则进行正确的软件设计可以大大减少调试时间和错误的副作用,也使得程序更容易修改和维护
在函数定义中,把限定词inline放在函数返回类型的前面“建议”编译器在适当的地方生成函数代码的副本,以避免函数调用。这种折中办法是把函数代码的多份副本插入到程序中(通常会使程序变大),而不是仅对一份函数代码,每次调用函数时都会把控制权传给它。编译器可以忽略inline限定词,并且对于除了小函数外的函数通常会这样做。
inline限定词应该只适用于小的、经常使用的函数。
如下风格的函数foo不能成为内联函数
inline void foo(int x,int y)
void foo(int x,int y) { }
如下风格的函数foo则可以成为内联函数
void foo(int x, int y)
inline void foo(int x,int y) { }