C++学习笔记(二):内联函数inline

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/FUZHENQI/article/details/76443717

一般来说,当我们定义一个函数以后,编译器就会在内存中为其创建一个指令集,当我们调用这个函数时,程序就会跳转到该指令集处。当该函数运行完毕后,程序又会返回到原来执行调用该函数的下一行继续执行。假如对该函数执行了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;
}

这里写图片描述
注意:在不知道具体怎么做时最好先不要使用内联函数,等程序完成大部分时再对符合要求的函数进行内联操作。
最后,需要指出的是,内联函数只适用于短小的函数,否则程序的体积将会大大增加。

猜你喜欢

转载自blog.csdn.net/FUZHENQI/article/details/76443717