内联函数是C++为提高程序运行速度所做的一项改进。应有选择地使用内联函数,如果代码执行时间很短,内联调用就可以节省非内联调用使用的大部分时间。使用内联函数特性,需要在函数前加上关键字inline。
2. 代码#include#include "my_inline.h" inline double square(double x) { return x * x; } #define SQUARE(X) X*X void my_inline(void) { using namespace std; double a, b; double c = 13.0, d; cout << "***inline test***" << endl; a = square(5.0); b = square(4.5 + 7.5); //b = (4.5+7.5) * (4.5+7.5) = 144 cout << "a = " << a << ", b = " << b << "n"; cout << "c = " << c; cout << ", c squared = " << square(c++) << "n"; //c = 13 * 13 = 169 cout << "now c = " << c << "n"; cout << "***define test***" << endl; c = 13.0; a = SQUARE(5.0); b = SQUARE(4.5 + 7.5); //b = 4.5 + 7.5 * 4.5 + 7.5 = 45.75 cout << "a = " << a << ", b = " << b << "n"; cout << "c = " << c; cout << ", c SQUARE = " << SQUARE(c++) << "n"; //c = 13 * 14 = 182 cout << "now c = " << c << "n"; }
输出: ***inline test*** a = 25, b = 144 c = 13, c squared = 169 now c = 14 ***define test*** a = 25, b = 45.75 c = 13, c SQUARE = 182 now c = 153. 内联与宏
SQUARE(c++)等价c++*c++ 用m代表第一个c++,n代表第二个c++ 1. 执行第一个c++即m; m=13, n=13, c=13; 2. 执行第二个c++即n; m=14, n=13, c=14; 3. 执行c++*c++即m*n; m*n=183, c=15; square(c++) 1. 执行c++; c=14 2. 执行c*c; 14 * 14 = 169;
内联函数是通过传递参数实现的,宏定义通过文本替换实现。
注:参考C++ Primer Plus第六版P208



