3.16 内联函数
优质
小牛编辑
134浏览
2023-12-01
从软件工程角度看,将程序实现为一组函数很有好处,但函数调用却会增加执行时的开销。
C++ 提供了内联函数 (inline function) 可以减少函数调用的开销,特别是对于小函数。函数定义中函数返回类型前面的限定符inline指示编译器将函数代码复制到程序中以避免函数调用。其代价是会产生函数代码的多个副本并分别插入到程序中每一个调用该函数的位置上(从而使程序更大),而不是只有一个函数副本(每次调用函数时将控制传人函数中)。典型情况下,除了最小的函数以外编译器可以忽略用于其他函数的 inline 限定符。
软件工程视点 3.16
任何对内联函数的改变都可能要求函数的所有客户重新编译。这样可能在有些程序的开发和维护中影响非常大。
编程技巧 3. 12
inline限定符只用于经常使用的小函数。 .
性能提示 3.9
使用内联函数可以减少执行时间,但会增加程序长度。
图3.19的程序用内联函数cube计算边长为s的立方体体积。函数 cube 参数表中的关键字 const 表示函数不修改变量的值s。关键字const将在第4、5、7章详细介绍。
// Fig. 3.19:fig03 19.cpp // Using an inline function to calculate // the volume of a cube. #include <iostream.h> inline float cube( const float s ) { return s * s * s; } int main( ) { cout << "Enter the side length of your cube: "; float side; cin >> side; cout << "Volume of cube with side ,, << side <<" is "<< cube( side ) << endl; return O; }
输出结果:
Enter the side length Of your cube:3.5 Volume Of cube with side 3.5 is 42.875
图3.19 用内联函数计算立方体的体积
软件工程视点3.17
即使被调用函数不修改变量,许多程序员也习惯将数值参数声明为const, const只保留原始参数的副本,而不保留原姑参数本身。