zoukankan      html  css  js  c++  java
  • C++ | inline关键字和内联函数

    inline关键字

    作用:避免频繁调用函数对栈内存重复开辟所带来的消耗。

    在 c/c++ 中,为了解决一些频繁调用的小函数大量消耗栈空间(栈内存)的问题,特别的引入了 inline 修饰符,表示为内联函数。

    栈空间就是指放置程序的局部数据(也就是函数内数据)的内存空间。

    在系统下,栈空间是有限的,假如频繁大量的使用就会造成因栈空间不足而导致程序出错的问题,如,函数的死循环递归调用的最终结果就是导致栈内存空间枯竭。

    内联函数

    C++内联函数是通常与类一起使用。如果一个函数是内联的,那么在编译时,编译器会把该函数的代码副本放置在每个调用该函数的地方。

    对内联函数进行任何修改,都需要重新编译函数的所有客户端,因为编译器需要重新更换一次所有的代码,否则将会继续使用旧的函数。

    如果想把一个函数定义为内联函数,则需要在函数名前面放置关键字 inline,在调用函数之前需要对函数进行定义。

    要点(Tips)

    1. 在内联函数内不允许使用循环语句和开关语句,并且不能内联函数本身不能是直接递归函数;
    2. 内联函数的定义必须出现在内联函数第一次调用之前;
    3. 类结构中所在的类说明内部定义的函数是内联函数。
    4. inline仅是一个对编译器的建议;
    5. 建议 inline 函数的定义放在头文件中;
    6. 关键字 inline 必须与函数定义体放在一起才能使函数成为内联,仅将 inline 放在函数声明前面不起任何作用;
    7. 慎用inline关键字。

    参考

    1. https://www.runoob.com/w3cnote/cpp-inline-usage.html
    2. https://www.runoob.com/cplusplus/cpp-inline-functions.html
  • 相关阅读:
    noip模拟70
    noip模拟测试62
    noip模拟66
    noip模拟67
    noip模拟64
    QATF自动化测试框架
    自动化领域谁主沉浮
    TestComplete9.2增强支持 Embarcadero RAD Studio XE3、Ext JS
    QTP对SAP的支持
    如何将makefile构建的工程导入C++test?
  • 原文地址:https://www.cnblogs.com/casperwin/p/12508350.html
Copyright © 2011-2022 走看看