关于inline的说明

来源:互联网 发布:数据库索引 asc 编辑:程序博客网 时间:2024/05/25 08:14
在函数前面加上inline关键字来声明,使得该函数为内联函数,则c++编译器会将函数体的代码直接插入到程序中调用该函数的地方。其与普通函数的区别在于前者是将代码插入到程序中,这也就使得程序的定义(不仅仅是声明)必须出现在它使用之前,否则编译器就不能插入代码。对于普通函数来说,编译器遇到每个函数的调用,才生成一个该函数的跳转。使用内联函数时为了更快速的运行程序,它是不需要调用函数的指令(如处理寄存器,将参数转入或者移出堆栈)。这样能够使得程序运行更快,但有时是以庞大的程序为代价的。c++并没有无限大的空间来生成内联函数,编译器可能会自行判断是否忽略请求。若是定义的内联函数中包含循环的话,一些c++编译器是会给予警告的。在类的内部定义成员函数会自动转换成为内联函数的。但是,一个类内部声明的函数,在类外定义的成员函数不是内联函数。