美文网首页
内联函数(inline)

内联函数(inline)

作者: ZayAlan | 来源:发表于2017-04-20 16:02 被阅读0次

    缘由

    程序调用函数时步骤过于繁琐,导致运行效率低下,故引入inline函数。

    格式

    inline  函数声明或定义语句
    

    对象中inline函数使用

    错误例子

    //a.h
    inline void f(int a, int b);
    //a.cpp
    inline void f(int a, int b)
    {
           return a+b;
    }
    //main.cpp
    #include 'a.h'
    int main()
    {
           f(10,10);
    //报错,此时编译器进入a.h文件后只找到f函数的inline声明,并未找到f函数,无法调用
           return  0;
    }
    

    实际使用

    应当在a.h中将f函数的body一块放入,即无须在a.cpp中作额外定义(若在a.cpp中依然做定义,则编译时程序会因为重复定义而报错,导致无法通过),此时编译通过。

    inline函数的实际功能

    即在一个地方调用inline函数时,实际是编译器将整个inline函数的代码放入该调用的地方,使得程序能直接调用该函数进行计算。

    在类中的inline

    只要在类中直接定义给出了body的函数,程序默认其为inline函数。如果只声明,而在类外要进行定义(同一个.h文件)使其为inline函数,则必须在定义时在前加上inline。

    注意

    1. 何时使用

    当需要效率而对空间占用没有过多要求的时候可以使用inline函数。

    1. 类中何时直接定义

    当所写函数代码较短时可直接在类中给出body。

    1. 何时不能使用

    当函数为递归时,编译器不会把其当成inline函数,对于非常大的函数(一般超过二十行),编译器也会拒绝其为inline函数。

    相关文章

      网友评论

          本文标题:内联函数(inline)

          本文链接:https://www.haomeiwen.com/subject/crylzttx.html