inline 注意事项

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()函数显示声明为inline. add()函数隐式声明为inline. 而sub()则为非inline函数.

虚函数能不能使用 inline 修饰呢? 在编译期能确定调用函数的, 使用 inline 修饰可以达到 inline 的效果. 而使用多态特性时, 只能在运行时确定调用函数, 所以即使使用了 inline 修饰, 也无法达到 inline 期望的效果. 如果觉得有帮助,可以扫描右边的微信打赏码支持一下.

Leave a Reply

Your email address will not be published. Required fields are marked *