C++ 中内联函数与普通函数的区别

17 Mar 2025 | 4 分钟阅读

函数是可重用代码的,它执行特定任务。它在程序的各个部分定义和调用。在 C++ 中,函数根据其用法和特性分为多种类型。这些类型包括常规函数、内联函数、递归函数、友元函数、虚函数、Lambda 函数等。这些函数对于组织和构建代码以及使整个程序易于维护至关重要。

普通函数

常规函数普通函数是 C++ 中最常见的函数。它们在任何类之外定义,并拥有一个单独的代码块,在函数被调用时执行。当普通函数被调用时,编译器会为该函数创建一个新的堆栈帧来跟踪函数调用。

此函数具有返回类型。在进行计算后,它将返回一些值。它在被调用时会获取一些值。这些值通常称为参数。该函数将对这些参数进行操作并返回输出。有些普通函数没有返回类型,这意味着它们的返回类型为 void。

普通函数的语法

它具有以下语法:

返回类型指定函数返回值的类型。参数是函数的输入,始终包含在括号中。函数代码写入{}中。返回用于向被调用的函数提供输出。

示例

让我们看一个 C++ 程序来演示普通函数:

输出

Differences between the inline function and the normal function in C++

内联函数

内联函数是 C++ 中特殊类型的函数。它们是小型、频繁使用的代码片段。这些函数直接插入到它们被调用的代码中,这被称为内联函数。编译器将用实际代码替换函数调用,以进行性能优化。因此,这里不会为函数创建新的堆栈帧或跳转到单独的代码块。这将有助于提高性能。

内联函数的语法

它具有以下语法:

关键字"inline"用于使用内联函数。返回类型不是强制性的。参数是函数的输入值。

示例

让我们看一个 C++ 程序来演示内联函数

输出

Differences between the inline function and the normal function in C++

内联函数与普通函数的相似之处

内联函数与普通函数之间有几个相似之处。内联函数与普通函数的一些主要相似之处如下

方面内联函数普通函数
返回类型两者都可以有任何有效的返回类型。返回类型可以是任何有效的数据类型。
参数它可以接受参数,包括默认值。参数可以定义为带或不带默认值。
函数原型它可以声明为带或不带函数原型。它通常使用函数原型声明。
可见性两者都可以在各种作用域(全局、命名空间、类)中声明。可见性取决于作用域和访问修饰符。
模块化通过封装代码鼓励模块化。通过在函数中封装代码来促进模块化。

内联函数与普通函数的区别

Differences between the inline function and the normal function in C++

内联函数与普通函数之间有几个区别。内联函数与普通函数的一些主要区别如下

方面内联函数普通函数
内联代码为优化而写入调用位置函数代码在函数站点被调用
代码重复它可能导致多个调用站点代码重复。所有调用站点共享一份代码。
执行速度更快,因为没有函数调用的开销。由于函数调用设置而较慢。
堆栈帧不创建堆栈帧。创建新的堆栈帧。
代码大小由于重复可能更大。代码将紧凑。
可读性内联函数阅读和理解起来很困难。它将更清晰、更易读、更容易理解。
调试由于代码分散,调试可能更具挑战性。通过集中式函数代码更容易调试。
递归调用这些不用于递归调用。这些更适合递归调用。
编译时间由于代码重复导致编译时间更长。由于单一函数定义,编译速度更快。
头文件通常在头文件中定义,以确保跨翻译单元内联。通常在头文件中声明,但在源文件中定义。
函数指针此函数不能显式分配函数。它可以有指向地址的指针。
虚函数它不能是虚函数,因为关键字 virtual 不适用。它可以声明为虚函数,以在类中启用多态性。