C++ 中的 inline(内联函数)

 2024-02-24 03:02:06  阅读 0

内联函数是C++的重要特性之一。 那么,首先我们来了解一下为什么要使用内联函数,内联函数的目的是什么?

函数调用本质上是通过调用汇编指令来实现的。 当运行到call指令时,CPU会执行一系列操作(包括保存返回地址和复制参数,这些操作与实际任务无关,会花费一定的时间),然后将控制权转移给指定的函数并在执行完成后返回控制权。

在这个过程中,如果切换时间大于运行时间,就会有明显的时间开销,这种情况通常发生在代码量较小的函数中。

C++提供了内联函数来减少函数调用开销。 内联函数是在调用时逐行展开的函数。 当调用内联函数时,内联函数的整个代码将被插入或替换到调用内联函数的位置。 此替换由 C++ 编译器在编译时执行。

定义内联函数的语法如下:

内联函数可以递归调用_递归调用后边的语句执行吗_调用递归过程或函数时

inline return-type function-name(parameters)
{
    // function code
}  

另请注意,这在某些情况下可能不起作用:

如果函数包含循环(for、while、do-while)如果函数包含静态变量。 如果函数是递归的。 如果函数返回类型不为void并且函数体中不存在语句。 如果函数包含或goto语句.隐式

在类范围内(即在类的大括号内)定义的成员函数是隐式的。 (当在类外部定义成员函数时,需要显式声明)

class A {
public:
    void print(int a, int b) {
        cout << a + b << endl;
    }
};

上面的代码相当于:

class A {
public:
    inline void print(int a, int b) {
        cout << a + b << endl;
    }
};

此外,作用于函数的声明或定义也是可以接受的。

VS相关

以上用例均在 vs 模式下运行,并且优化选项均打开。 它们在调试模式下无效。

在“ ”选项下,如果选择“”,编译器也会内联一些没有声明的“小函数”。 如果选择“仅适用于”,则仅内联声明的函数。

参考:

在 C++ 中-

简单:在C++中,sum是用于声明还是定义?

为什么不起作用? -CSDN社区

标签: 内联函数 c++

如本站内容信息有侵犯到您的权益请联系我们删除,谢谢!!


Copyright © 2020 All Rights Reserved 京ICP5741267-1号 统计代码