Inline Functions 是一個在調用時由編譯器內聯擴展的函數。在函數調用期間,會執行許多開銷任務,例如保存寄存器、將參數壓入堆棧以及返回調用函數。對於 small-size 函數來說,這些開銷既耗時又低效。在C++中,內聯函數就是用來解決這些開銷成本的。它通過以下方式線性擴展 編譯器在調用時進行編譯,從而避免了開銷。名為“的關鍵字排隊'在之前使用 函數聲明。
用法:
inline return_type function_name(parameters) { // Insert your Function code here }
例子:
C++
// C++ program to demonstrate inline function
// Importing input output stream files
#include <iostream>
using namespace std;
// Method 1
// Inline function
// To multiply two integer numbers
inline int multiplication(int x, int y)
{
// Returning the product of two numbers
return x * y;
}
// Method 2
// Main driver method/function
// Execution begins here
int main()
{
// Print and display the multiplication resultant number
// with usage of above created multiplication() inline()
cout << "Multiplication ( 20 , 30 ):"
<< multiplication(20, 30) << endl;
return 0;
}
輸出
Multiplication ( 20 , 30 ):600
現在詳細討論下一個函數,顧名思義, Normal Function 本質上隻是一個常見的 function in C++ 。它促進代碼重用並使程序模塊化。在函數調用期間,會執行許多開銷任務,例如保存寄存器、將參數壓入堆棧以及返回調用函數。
用法:
return_type_name function_name( parameters) { // Insert your Function code here }
例子:
C++
// 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()
{
// Calling the square() method/function
// over randoM value N
// Say N = 5
// Display message only
cout << "Enter number to compute its square : 5 " << endl;
// Calling the above square() in main()
// and print/display on the console
cout << "Square is : " << square(5) << endl;
return 0;
}
輸出
Enter number to compute its square : 5 Square is : 25
C++中內聯函數和普通函數的區別
編號 |
內聯函數 |
正常函數 |
---|---|---|
1. | 當它被調用時,它會被內聯擴展。 | 它是一個為程序提供模塊化的函數。 |
2. | 一般用於增加程序的執行時間。 | 一般用於提高代碼的可重用性,使其更易於維護。 |
3. | 它本質上是一個在函數較小且調用頻繁時使用的函數。 | 它本質上是執行特定任務的一組語句。當函數很大時使用它。 |
4. | 這個需要 '排隊'其聲明中的關鍵字。 | 它的聲明中不需要任何關鍵字。 |
5. | 與普通函數相比,它的執行速度通常要快得多。 | 對於小尺寸函數,它通常比內聯函數執行得慢。 |
6. | 在這種情況下,函數體被複製到使用它的每個上下文,從而減少了在存儲設備或硬盤中搜索函數體的時間。 | 在這種情況下,函數體存儲在存儲設備中,每次調用該特定函數時,CPU 都必須將函數體從硬盤加載到 RAM 中執行。 |
7. | 編譯器始終在編譯時調用該函數的每個點處放置該函數代碼的副本。 | 它不提供此類函數。 |
8. | 它一般隻包含2-3行代碼。 | 當行代碼數量非常大時,即普通函數根據需要包含大量代碼。 |
9. | 與正常函數相比,理解和測試有點困難。 | 與內聯函數相比,它更容易理解和測試。 |
10. | 類中存在的函數是隱式內聯的。 | 存在於類之外的函數被視為普通函數。 |
11. | 太多內聯函數會影響編譯後的文件大小,因為它會重複相同的代碼。 | 普通函數過多不會影響編譯後的文件大小。 |
相關用法
- C++ Inline和Macro的區別用法及代碼示例
- C++內聯函數用法及代碼示例
- C++ Integer轉String用法及代碼示例
- C++ Iswctype()用法及代碼示例
- C++ INT_MAX用法及代碼示例
- C++ INT_MIN用法及代碼示例
- C++ Implementing of strtok()用法及代碼示例
- C++ Iterators和Pointers的區別用法及代碼示例
- C++ cos()用法及代碼示例
- C++ sin()用法及代碼示例
- C++ asin()用法及代碼示例
- C++ atan()用法及代碼示例
- C++ atan2()用法及代碼示例
- C++ acos()用法及代碼示例
- C++ tan()用法及代碼示例
- C++ sinh()用法及代碼示例
- C++ ceil()用法及代碼示例
- C++ tanh()用法及代碼示例
- C++ fmod()用法及代碼示例
- C++ acosh()用法及代碼示例
- C++ asinh()用法及代碼示例
- C++ floor()用法及代碼示例
- C++ atanh()用法及代碼示例
- C++ log()用法及代碼示例
- C++ trunc()用法及代碼示例
注:本文由純淨天空篩選整理自madhurihammad大神的英文原創作品 Difference Between Inline and Normal Function in C++。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。