C++笔记 - inline

156 阅读1分钟

inline是内联的意思。使用inline关键字修饰函数的作用是,建议编译器对函数进行展开,插入代码;而不是进行函数调用。使用内联的好处是,提高代码执行效率。因为没有了函数调用的开销。一般短小需要重复执行的函数会使用inline修饰。如果函数代码量大,即使使用inline修饰,编译器也不一定会将函数展开;即使展开了,由于inline函数造成代码量激增也不是一件好事。


下面看一个普通函数例子:

int add(int x, int y);
inline int add(int x, int y) {
    return x + y;
}

函数声明并不需要inline修饰,但函数定义需要inline修饰。


下面看一个类成员函数例子:

class num {
private:
    int m_a;
    
public:
    inline void show(void) {
        std::cout << m_a << std::endl;
    }
    
    void add(int x) {
        m_a += x;
    }
    
    void sub(int x);
};

show()函数显示声明为inlineadd()函数隐式声明为inline。而sub()则为非inline函数。


虚函数能不能使用inline修饰呢?在编译期能确定调用函数的,使用inline修饰可以达到inline的效果。而使用多态特性时,只能在运行时确定调用函数,所以即使使用了inline修饰,也无法达到inline期望的效果。