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写成函数的额外执行开销

    使用代码的缺点:

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

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

    无法操作类的私有成员

     

  • 相关阅读:
    light oj 1105 规律
    light oj 1071 dp(吃金币升级版)
    light oj 1084 线性dp
    light oj 1079 01背包
    light oj 1068 数位dp
    light oj 1219 树上贪心
    light oj 1057 状压dp TSP
    light oj 1037 状压dp
    矩阵快速幂3 k*n铺方格
    矩阵快速幂2 3*n铺方格
  • 原文地址:https://www.cnblogs.com/aeolian/p/7685437.html
Copyright © 2011-2022 走看看