内联函数">在C++程序中符合下列条件的函数为内联函数:
inline关键字的函数">1. 函数说明前冠以“inline”关键字的函数
2. 类内定义的函数成员
内联函数可以提高程序运行效率">将函数体短小而又频繁调用的函数说明为内联函数可以提高程序运行效率。
宏定义方式define也可以实现类似于内联函数inline的功能不过内联函数的方式更为方便和可靠">利用编译预处理的宏定义方式(#define)也可以实现类似于内联函数(inline)的功能。不过,内联函数的方式更为方便和可靠。
inline int MAX(int a, int b) { if(a > b) return a; return b;}
#define MAX(a, b) { (a > b) ? a : b}
宏定义的功能与对应的内联函数基本一致但仍然是有差别的宏定义中的参数和计算结果没有类型说明编译时不可能进行类型检查是不安全的更无法区分赋值参数和引用参数很容易出错">虽然带参数的宏定义的功能与对应的内联函数基本一致,但仍然是有差别的:宏定义中的参数和计算结果没有类型说明,编译时不可能进行类型检查,是不安全的,更无法区分赋值参数和引用参数,很容易出错。
内联函数少用宏定义实现">因此,C++语言的编程中,当某段程序短小而又经常被重复时,建议采用内联函数,少用宏定义实现。
宏定义容易出错的例子">举一个宏定义容易出错的例子:
#define f1(x) x*x
#define f2(x) (x)*(x)
#define f3(x) ((x)*(x))
int a=3, b=4, c=16;
cout<<f1(a+1);
cout<<f2(a+1);
cout<<c/f2(b);
cout<<c/f3(b);