内联函数
内联函数是C++为了提高程序的运行速度所作的一项改进。与常规函数的区别不在于编写方式, 而是在于C++编译器如何将代码块整合到程序中。
本文不做过多原理介绍,有需要定义可查看内联函数。
inline关键字
要使用内联函数必须在函数定义和函数声明时加上inline关键字。
inline <函数类型> <函数名> {函数体}
下面是一个简单加法函数的举例.
/*
实验目的:内联函数的使用 inline关键字
实验时间:2019.9.12
实验人员:@Answer
内联函数:(宏函数的缺陷)
1、以空间换时间:调用函数时编译器会将函数替代成函数内部语句
2、类的成员方法会自动加上inline关键字
3、注意事项:
函数内部不能存在for、以及过多的if语句
函数不能进行取址操作
函数体不能太庞大
心得:以空间换时间
*/
#include <iostream> //输入输出标准库
#pragma warning(disable:4996)//处理4996异常
using namespace std;//定义命名空间
/*宏函数*/
#define Add(x,y) x+y //宏函数:用于处理小的函数,可以节省出入栈开销,但是存在缺陷
/*内联函数:inline+函数名*/
inline int Add_1(int x, int y) {
return x + y;
}
/*主函数*/
int main(void) {
cout << "宏函数输出:" << Add(10, 20) << endl;
cout << "内联函数输出:" << Add_1(10, 20) << endl;
system("pause");
return 0;
}
注意事项
- 内联函数内部不能存在 for 循环以及过多的 if 语句
- 函数不能进行取址操作
- 函数体不能太过庞大,一般适用于代码量较为简单的函数
优点
以空间换时间:
编译器在编译时会将函数调用的语句 Add(10,20) 直接用所调用的函数的函数体 return x + y 进行编译,这样就节省了出入栈的操作,提高程序运行的速度。
当然在代码量小的情况下看不出大区别,但是在大项目中,代码的运行速度还是很关键的。