天天看點

C++基礎之

//内聯函數定義
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));

有點像宏。一般說來,内聯機制适用于優化小的,隻有幾行的而且經常被調用的函數。還有遞歸函數大多也不支援。

#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;
}      

繼續閱讀