1.什么是内联函数
内联函数(Inline Functions)是一种在编程语言中的概念,它用于在编译时将函数的代码直接插入到函数调用的地方,而不是通过函数调用的方式进行执行。换句话说,编译器会将内联函数的代码复制到调用处,以消除函数调用的开销。
2.内联函数的作用
内联函数主要用于优化程序的性能。函数调用通常需要一定的开销,包括保存和恢复现场、参数传递以及跳转等操作。对于一些短小的函数,这些开销可能会相对较大,因此使用内联函数可以避免这些额外的开销,提高程序的执行效率。
3.内联函数的写法
在一般函数前面加上inline的关键字,在头文件里定义而非声明。
4.内联函数的优点
- 以牺牲代码的空间换时间,提高了效率。
- 与c语言的宏的思想类似,但要优于宏,因为宏不能做类型检查,而内联函数作为一个函数可以进行类型检查。
5.示例代码
//这是myclass.h
class MyClass
{
public:
void setA(int _a);//普通的成员函数,函数声明和定义分别定义在函数的内部和外部,不要求在同一个文件
void setB(int _b) //隐式的内联函数,函数的声明和定义都定义在函数的内部
{
b = _b;
}
inline void setC(int _c); //显式的内联函数,使用关键字inline
//函数声明在类的内部,函数定义在类的外部,但是函数声明和定义必须在同
//一个文件
private:
int a;
int b;
int c;
};
inline void MyClass::setC(int _c) //显式的内联函数,函数定义跟函数声明必须再同一个文件
{
c = _c;
}
//这是myClass.cpp
#include "myclass.h"
void MyClass::setA(int _a) //普通的成员函数定义
{
a = _a;
}
6.使用内联函数的注意点
- 使用inline定义的内联函数必须将类的声明和内联成员函数的定义都放在同一个文件中,否则编译时无法进行代码的置换;
- 内联函数一般都是1-5行的小函数, 谨慎对待析构函数, 析构函数往往比其表面看起来要更长, 因为有隐含的成员和基类析构函数被调用;
- 不要在内联函数内使用循环语句和开关语句;
- 有些函数即使声明为内联的也不一定会被编译器内联, 比如虚函数和递归函数就不会被正常内联。