现在的位置: 首页 > 综合 > 正文

内联函数

2018年04月13日 ⁄ 综合 ⁄ 共 1006字 ⁄ 字号 评论关闭

(1)  什么是内联函数?

函数的函数体放在类体内。
(2)为什么要引入内联函数?

函数的代码被放入符号表中,在使用时(像宏一样展开)取消了函数的参数压栈,减少了调用的开销。

(3)内联函数和宏的区别?

宏是由预处理器对宏进行替代,而内联函数是通过编译器控制来实现的。

(4)什么时候用内联函数?

一般用来定义读写函数。读写私有或受保护的成员数据。读写函数改写成内联函数提高执行效率。

Class A
{
Private:
int nTest;
Public:
int readtest() { return nTest;}
void settest(int I) { nTest=I; }
}
(5)如何使用内联函数?

任何在类体内定义的函数都会被自动的认为是内联函数。
我们可以用inline来定义内联函数。
inline int A (int x) { return 2*x; }
(6)注意事项:
1.在内联函数内不允许用循环语句和开关语句switch。
2.内联函数的定义必须出现在内联函数第一次被调用之前。

Example:

#include <iostream> 
#include <string> 
using namespace std; 
inline string dbtest(int a); //函数原形声明为inline即:内联函数 
void main() 

    for (int i=1;i<=10;i++) 
    { 
        cout << i << ":" << dbtest(i) << endl; 
    } 
    cin.get(); 

string dbtest(int a)//这里不用再次inline,当然加上inline也是不会出错的 

    return (a%2>0)?"奇":"偶"; 
}

使用inline修饰带来的好处我们表面看不出来,其实在内部的工作就是在每个for循环的内部所有调用dbtest(i)的地方都替换成了(i%2>0)?"奇":"偶"这样就避免了频繁调用函数对栈内存重复开辟所带来的消耗。

inline的使用是有所限制的,inline只适合函数体内代码简单的函数使用,不能包含复杂的结构控制语句例如while switch,并且不能内联函数本身不能是直接递归函数

c语言中广泛被使用的#define语句,但是define是会产生副作用的,尤其是不同类型参数所导致的错误,在c++中是不推荐使用define的。

 

 

抱歉!评论已关闭.