當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


C++ Inline和Normal的區別用法及代碼示例


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. 太多內聯函數會影響編譯後的文件大小,因為它會重複相同的代碼。 普通函數過多不會影響編譯後的文件大小。


相關用法


注:本文由純淨天空篩選整理自madhurihammad大神的英文原創作品 Difference Between Inline and Normal Function in C++。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。