内联函数与普通函数在C++中的区别
内联函数 是当被调用时由编译器扩展的函数。在函数调用时,执行了很多开销任务,如保存寄存器、将参数推到堆栈上,并返回到调用函数。这些开销耗费时间,对于小型函数而言效率很低。在C++中,内联函数用于解决这些开销。当被调用时,编译器将其作为队列进行扩展,从而避免了开销。在函数声明之前使用关键字“ inline ”。
语法:
示例:
输出
现在我们来看下一个函数, 普通函数 就像C++中的一个普通函数一样。它促进了代码重用,使程序模块化。 在函数调用时,执行了很多开销任务,如保存寄存器、将参数推到堆栈上,并返回到调用函数。
语法:
示例:
输出
内联函数与普通函数在C++中的区别
序号 | 内联函数 | 普通函数 |
---|---|---|
1. | 调用时会膨胀为内联函数。 | 提供程序模块化的函数。 |
2. | 通常用于增加程序的执行时间。 | 通常用于提高代码的可重用性和可维护性。 |
3. | 基本上是一个函数,在函数很小且经常调用时使用。 | 基本上是一组语句,执行特定任务。当函数很大时使用。 |
4. | 在声明时需要 ‘inline’ 关键字。 | 在声明时不需要任何关键字。 |
5. | 比普通函数执行速度快得多。 | 比内联函数在函数很小的情况下执行速度慢一些。 |
6. | 在每个函数调用时,函数体的副本都会复制到所使用的每个上下文中,从而减少在存储设备或硬盘中搜索函数体的时间。 | 在存储设备中存储函数体,当每次调用该特定函数时,CPU必须将函数体从硬盘加载到RAM中执行。 |
7. | 编译器总是在编译时将该函数的代码副本放置在每个调用该函数的点。 | 不提供这种类型的功能。 |
8. | 通常包含只有 2-3 行代码。 | 当行代码真正庞大时,即普通函数根据需要包含更多代码。 |
9. | 与普通函数相比,更难理解和测试。 | 与内联函数相比,更容易理解和测试。 |
10. | 存在于类内的函数被隐式命名为内联函数。 | 存在于类外的函数被视为普通函数。 |
11. | 太多的内联函数在编译后会影响文件大小,因为它会复制相同的代码。 | 太多的普通函数在编译后不会影响文件大小。 |