欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C++内联函数

程序员文章站 2024-03-23 13:33:28
...

常规函数调用的时候,执行到函数调用指令时,程序将在函数调用后立即存储该指针的内存地址,并将函数参数复制到堆栈(为此保留的内存块),跳到标记函数起点的内存单元,执行函数代码,然后跳回到地址被保存的指令处。来回跳跃并记录跳跃位置,意味着将会需要一定的开销。

C++内联提供了另一种选择。即编译器将使用一定的函数代码来替换函数调用。对于内联函数,程序无需跳到另一个位置处执行代码并跳回来,因此,内联函数运行速度比常规函数快。但代价是将会占用更多的内存。如果程序在10个不同的地方调用同一个内联函数,则该程序将包含函数代码的10个副本。

使用函数内联的条件:

1,在函数声明之前加上内联关键字 inline;

2,在函数定义前加上内联关键字inline;

应当注意的是:程序员请求将函数作为内联函数时,编译器并不一定会满足这种要求(响应结果因编译器而异),它可能认为该函数过大或者注意到该函数调用了自己(内联函数不能递归)。

内联和宏的区别:

内联函数是按值来传递参数,而宏不是通过传递参数来实现的,而是通过文本替换。

下面是使用内联技术的一段代码:

#include<iosream>

inline double square(double x) { return x * x }

int main()
{
    using namespace std;
    double a,b;
    double c = 13.0;
    
    a = square(5.0);
    b = square(4.5 + 7.5);
    cout << " a = " << a << ", b = " << b << "\n";
    cout << " c = " << c;
    cout << ", c square = " << square(c++) << "\n";
    cout << "now c = " << c <<"\n";
    return 0;
}

//打印结果为:
a = 25, b = 144
c = 13, c square = 169
now c = 14

 

相关标签: C++