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期望的效果。