C++学习笔记(二):内联函数inline
程序员文章站
2024-03-21 12:05:34
...
一般来说,当我们定义一个函数以后,编译器就会在内存中为其创建一个指令集,当我们调用这个函数时,程序就会跳转到该指令集处。当该函数运行完毕后,程序又会返回到原来执行调用该函数的下一行继续执行。假如对该函数执行了100次调用,那么程序就要来回跳转100次,显然这是相当影响程序执行效率的。
C++使用inline将函数声明为内联函数。
inline int func(int); // 将func函数声明为内联函
这样编译器将不会创建真正的函数,而只是将这个内联函数的所有代码拷贝到调用函数中,这样程序在执行调用该函数时就不需要来回跳转,自然就会提高程序的运行效率。
但是任何事情都有两面性,使用内联函数再提高效率的同时,程序的体积会增加。例如:程序调用内联函数100次,那么内联函数中的代码将被复制100次,是程序的体积增加。
虽然内联函数对增加程序的体积,但是,当函数很小的时候,即使复制很多次,函数的体积增加也不会增加很多。这时候,使用内联函数是很划算的。例如:
#include<iostream>
using namespace std;
inline int func(int); // 将func函数声明为内联函数
int func(int x){return x;} // func函数的作用是返回x
int main()
{
int x;
cout<<"请输入一个数字:\n";
cin>>x;
cout<<endl;
cout<<"输入的数字为:"<<func(x)<<endl;
// 由于func函数声明为内联函数,此句语句等同于
// cout<<"输入的数字为:"<<return x;<<endl;
// 这样,程序就不用跳转到func函数,再跳转回来,程序运行速度度提升
return 0;
}
我们也可以将类的成员函数定义为内联函数。类的成员函数定义为内联函数有两种方式。一:使用inline将成员函数再类内声明为内联函数,并在类外给出函数定义;二:在类内,同时对成员函数进行声明和定义。下面来看一个简单的例子
#include<iostream>
using namespace std;
class A
{
public:
inline void func(int); // 使用inline将func函数声明为内联函数
int get(){return x;} // 在类中,成员函数的声明和定义放在一起,get也是内联函数
private:
int x;
};
void A::func(int a){x=a;}
int main()
{
A a;
int x;
cout<<"请输入一个数字:\n";
cin>>x;
a.func(x);
cout<<endl;
cout<<"输入的数字为:"<<a.get()<<endl;
return 0;
}
注意:在不知道具体怎么做时最好先不要使用内联函数,等程序完成大部分时再对符合要求的函数进行内联操作。
最后,需要指出的是,内联函数只适用于短小的函数,否则程序的体积将会大大增加。
下一篇: EasyExcel导入与导出Excel