C++中的inline function(内联函数)

2019-12-11  本文已影响0人  fck_13

(1)inline有什么用?

通常我们调用函数的时候,一般的流程为函数入栈,传入参数(如果有的话),出栈,再把返回值(如果有的话)给调用函数。
将函数声明成inline后,当执行到该函数的时候,该函数会再执行点展开,你可以把这个过程想象成宏展开。这样就可以避免出栈入栈和传递参数返回值的操作。这是一种编译器的优化。

(2)什么情况下函数可能是inline的?

class X {
    int a;
    friend void friend_set(X& p, int i) {
        p.a = i; // this is a non-member function
    }
 public:
    void member_set(int i) {
        a = i; // this is a member function
    }
};

(3)编译器如果对待inline函数?

说到底,inline是编译器的一种优化策略,所以inline对编译器来说只是一种建议,编译器可以接受,也可以不接受。所以即便你对一个函数加了inline,编译器也可以把它当成普通函数。
如果一个函数没有被声明为inline,而编译器觉得它可以inline,也会把它搞成inline函数。

(4)什么情况下不能将函数声明为inline

(5)inline有什么缺点?

上一篇下一篇

猜你喜欢

热点阅读