在C++中,通常定义以下函数来求两个数之间的最大值:int max(int x,int y)
{return x > y ? x : y;}
这样做的好处是:
但是函数调用开销太大,在C中使用宏定义来替代表达式,在C++中就可以使用inline内联函数
内联函数是C++的增强特性之一,用来降低程序的运行时间
当内联函数收到编译器的指示时,即可发生内联:编译器将使用函数的定义体来代替函数调用语句,这种替代行为发生在编译阶段而非程序运行阶段
定义函数时,在函数类型前以关键字“inline”来声明函数,即可使函数成为内联声明函数
inline int max (int x,int y) { return x > y ? x : y; }
1.使用宏定义最大的缺点是容易出错,预处理器在拷贝宏定义代码时常常发生意想不到的边际效应
2.宏的另一个缺点就是不可调试,但是内联函数是可以调试的
3.对于C++而言,使用宏代码无法操作类的私有数据成员
4.函数被内联后,编译器就可以通过上下文相关的优化技术对结果代码执行更深入的优化
关键字inline必须与函数定义体放在一起才能使函数成为内联,仅将inline放在函数声明前不起任何作用
所以内联函数的声明和定义都需要放入头文件中
1.函数体内的代码比较短,调用比较频繁
,适合使用内联函数。若函数体内的代码比较长,使用内联将导致可执行代码膨胀过大
2.函数体内没有循环或其他复杂的控制结构
3.类的构造函数和析构函数不适合使用内联
原文:https://www.cnblogs.com/Bin-zzz/p/14598743.html