内联函数
内联函数是一个在被调用时被编译器内联展开的函数。在函数调用过程中,要执行大量的开销任务,如保存寄存器、将参数推送到堆栈,并返回到调用函数。这些开销对于小规模的函数来说是很耗时和低效的。在C++中,内联函数是用来解决这些开销的。当它被调用时,它被编译器在行内展开,因此避免了开销。在函数声明之前使用一个被称为 “inline”的关键字。
语法:
inline return_type function_name(parameters)
{
// Insert your Function code here
}
示例代码:
#include <iostream>
using namespace std;
// Method 1
inline int multiplication(int x, int y)
{
// Returning the product of two numbers
return x * y;
}
// Method 2
int main()
{
cout << "Multiplication ( 20 , 30 ):"\n << multiplication(20, 30) << endl;
return 0;
}
运行结果:
Multiplication ( 20 , 30 ):600
普通函数
现在开始讨论下一个函数,普通函数基本上就是C++中的一个普通函数。它促进了代码的重用并使程序模块化。在函数调用过程中,有很多开销任务被执行,如保存寄存器、将参数推送到堆栈,以及返回到调用函数。
语法:
return_type_name function_name( parameters)
{
// Insert your Function code here
}
示例代码:
// Importing input output streams
#include <iostream>
using namespace std;
// Method/Function
// To get square of integer number been passed
int square(int s)
{
// Returning the square of number
return s * s;
}
// Method
int main()
{
// Say N = 5
// Display message only
cout << "Enter number to compute its square : 5 " << endl;
cout << "Square is : " << square(5) << endl;
return 0;
}
运行结果:
Enter number to compute its square : 5
Square is : 25
C++中内联函数和普通函数的区别
编号 | 内联函数 | 普通函数 |
---|---|---|
1 | 当内联函数被调用时,它被内联展开。 | 普通函数是一个为程序提供模块化的函数。 |
2 | 内联函数一般用于增加程序的执行时间。 | 一般用于提高代码的可重用性,使其更易于维护。 |
3 | 内联函数基本上是一个函数,当函数很小且调用很频繁时,就会使用它。 | 普通函数基本上是一组执行特定任务的语句。当函数很大时,它就会被使用。 |
4 | 内联函数在声明中需要 “inline “关键字。 | 普通函数在声明中不需要任何关键字。 |
5 | 与普通函数相比,内联函数通常执行得更快。 | 对于小规模的函数,它的执行速度通常比内联函数慢。 |
6 | 在这种情况下,函数的主体被复制到每个使用它的上下文中,这反过来又减少了在存储设备或硬盘中搜索主体的时间。 | 在这种情况下,函数的主体被存储在存储设备中,当该特定函数每次被调用时,CPU必须将主体从硬盘加载到RAM中进行执行。 |
7 | 编译器总是在编译时将该函数的代码拷贝放在调用该函数的每个点上。 | 普通函数不提供这种类型的功能。 |
8 | 内联函数一般只包括2-3行代码。 | 当行代码的数量是真正大量的时候,即正常的函数根据需要包含很多代码。 |
9 | 与普通函数相比,它有点难以理解和测试。 | 与内联函数相比,它更容易理解和测试。 |
10 | 存在于类内的函数是隐式内联的。 | 存在于类外的函数被认为是普通函数。 |
11 | 太多的内联函数会影响编译后的文件大小,因为它重复了相同的代码。 | 太多的普通函数不会影响编译后的文件大小。 |
C++中内联函数和普通函数的区别
欢迎任何形式的转载,但请务必注明出处,尊重他人劳动成果。
转载请注明:文章转载自 有区别网 [http://www.vsdiffer.com]
本文标题:C++中内联函数和普通函数的区别
本文链接:https://www.vsdiffer.com/vs/difference-between-inline-and-normal-function-in-cpp.html
免责声明:以上内容仅代表 个人看法、理解、学习笔记、总结和研究收藏。不保证其正确性,因使用而带来的风险与本站无关!如本网站内容冒犯了您的权益,请联系站长,邮箱: ,我们核实并会尽快处理。
相关主题
- C++ 11、C++ 14和C++ 17的区别
- C++ map与unordered_map的区别
- C++ set 与 unordered_set的区别
- C++ std::set 和std::vector 的区别
- C++ std::set和std::list的区别
- C++ STL中Multiset和Multimap的区别
- C++ 中的 std::next 与 std::advance 的区别
- C++中 cout 和std::cout的区别
- C++中Const和Regular迭代器的对比及其示例
- C++中关系运算符(==)和std :: string :: compare()的区别
- C++中的浅拷贝和深拷贝的区别
- C++中虚函数和内联函数的区别