zoukankan      html  css  js  c++  java
  • C++内联函数(03)

    在C++中我们通常定义以下函数来求两个整数的最大值:

    代码如下:

    int max(int a, int b)
    {
     return a > b ? a : b;
    }

    为这么一个小的操作定义一个函数的好处有:

    ① 容和理解函数 max 的调用,要比读一条等价的条件表达式并解释它的含义要容易得多

    ② 如果需要做任何修改,修改函数要比找出并修改每一处等价表达式容易得多

    ③ 使用函数可以确保统一的行为,每个测试都保证以相同的方式实现

    ④ 函数可以重用,不必为其他应用程序重写代码

    虽然有这么多好处,但是写成函数有一个潜在的缺点:调用函数比求解等价表达式要慢得多。在大多数的机器上,调用函数都要做很多工作:调用前要先保存寄存器,并在返回时恢复,复制实参,程序还必须转向一个新位置执行C++中支持内联函数,其目的是为了提高函数的执行效率,用关键字 inline 放在函数定义(注意是定义而非声明)

    inline int max(int a, int b)
    {
     return a > b ? a : b;
    }
    则调用: cout<<max(a, b)<<endl;
    
    在编译时展开为: cout<<(a > b ? a : b)<<endl;
    
    从而消除了把 max写成函数的额外执行开销

    使用代码的缺点:

    容易出错,总会发生意想不到的边际效应

    宏是不可调试的,内联函数可以调试

    无法操作类的私有成员

     

  • 相关阅读:
    股票行情
    证券总结
    求职
    Android的Touch事件处理机制
    订货量、成交量、价订货量、成交量、价格与行情之间的关系
    Android下如何理解onMeasure,onLayout的过程
    并发和并行的区别
    网页布局
    计算机发展史--图灵
    计算机发展史
  • 原文地址:https://www.cnblogs.com/aeolian/p/7685437.html
Copyright © 2011-2022 走看看