程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++基礎之 "內聯函數"

C++基礎之 "內聯函數"

編輯:C++入門知識

想看下內聯函數跟普通函數外觀有什麼區別
[cpp] 
//內聯函數定義 
inline int sum(int a,int b){ 
    return a + b; 

//普通函數定義 
int sum1(int a,int b){ 
    return a + b; 

多了inline關鍵詞。
想起之前寫C語言,把一些重復做的事情封裝成一個函數,真是很大的進步。但是他們說調用函數比直接代碼要慢些。內聯函數有什麼好處呢?避免了函數調用的開銷。也就是說如果我寫下面的代碼:
printf("a+b=%d\n",sum(a,b));
它會把代碼展開變成
printf("a+b=%f\n",(a + b));
有點像宏。一般說來,內聯機制適用於優化小的,只有幾行的而且經常被調用的函數。還有遞歸函數大多也不支持。
內聯函數的定義對編譯器必須是可見的,以便編譯器能夠在調用點內聯展開該函數的代碼,所以僅有函數原型是不夠的。
完整代碼:
[cpp] 
#include <stdio.h> 
//內聯函數定義 
inline int sum(int a,int b){ 
    return a + b; 

//普通函數定義 
int sum1(int a,int b){ 
    return a + b; 

 
int main(int argc, char* argv[]) 

    int a = 1,b = 2; 
    //下面的調用等於 printf("a+b=%f\n",(a + b)); 
    printf("a+b=%d\n",sum(a,b)); 
    //普通函數調用 
    printf("a+b=%d\n",sum1(a,b)); 
 
    return 0; 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved