C++基礎(chǔ)-(函數(shù))

C++基礎(chǔ)

函數(shù)

內(nèi)聯(lián)函數(shù)

  • 內(nèi)聯(lián)函數(shù)
    • 非常短的函數(shù)適合于內(nèi)聯(lián)
    • 函數(shù)體會到插入到發(fā)生函數(shù)調(diào)用的地方
    • 普通函數(shù)調(diào)用多次也只有一塊內(nèi)存劃分,省空間費時間。內(nèi)聯(lián)函數(shù)調(diào)用幾次就占用幾次空間,節(jié)省時間,同宏一樣。
inline void fn()
{
    std::cout<<"hello world"<<std::endl;   
}
int main()
{
    fn();
    fn();
}
  • 內(nèi)聯(lián)函數(shù)的函數(shù)體限制
    1. 內(nèi)聯(lián)函數(shù)中,不能有結(jié)構(gòu)復(fù)雜的結(jié)構(gòu)控制語句
    2. 不能出現(xiàn)遞歸函數(shù)
    3. 內(nèi)聯(lián)函數(shù)只適合1-5行小函數(shù)
  • 內(nèi)聯(lián)函數(shù)與宏定義
    1. 宏定義可以代替小函數(shù)定義,但是有缺陷
    2. 宏只是告訴編譯器簡單的替代代碼,不檢查參數(shù)類型,
      往往造成語句的實際結(jié)果不能代表程序員的意圖
      宏的作用可以用內(nèi)聯(lián)函數(shù)代替:

重載函數(shù)

  • 定義:兩個以上的函數(shù),取相同的函數(shù)名,但是形參的個數(shù)或者類型不同,編譯器根據(jù)實參和形參的類型及個數(shù)的最佳匹配,自動確定調(diào)用哪個函數(shù),這就是函數(shù)重載。
#include <iostream>
void test()//test_void
{
    std::cout<<"hello world1"<<std::endl;
}
void test(int a)//test_int
{
    std::cout<<"hello world2"<<std::endl;
}
int main()
{
    test();//hello world1
    test(10);//hello world2
}
  • 原函數(shù)名和形參類型不一樣才可以使用重載函數(shù)
void test(int a);
void test(int b);//No

void test(int a);
int test();//No

void test(int a,int b);
void test(int b);//Yes

void test(int a);
void test();//Yes

void test(int a,double c);
void test(int c,double b);//Yes
  • 內(nèi)聯(lián)函數(shù)的重載順序
    • 尋找一個嚴(yán)格的匹配,如果找到了就是那個
    • 通過內(nèi)部轉(zhuǎn)換尋求一個匹配,找到了就用
    • 通過用戶定義的轉(zhuǎn)換尋求一個匹配,若能查出有唯一的的一組轉(zhuǎn)換,就用那個函數(shù)

遞歸函數(shù)

  • 定義:自調(diào)用函數(shù),在函數(shù)體
  • 遞歸函數(shù)的評價
    • 遞歸增加了系統(tǒng)開銷
    • 遞歸的目的是簡化程序設(shè)計,使程序易讀
    • 現(xiàn)代程序設(shè)計的目標(biāo)主要是可讀性好
    • 對于嵌入式來說,使用遞歸要慎重。

參數(shù)默認(rèn)的函數(shù)

  • 調(diào)用函數(shù)時可以不指定該全部參數(shù)
  • 為不指定參數(shù)賦默認(rèn)值
void test(int a=100)
{
    std::cout<<"test="<<b<<std::endl;
}
int main()
{
    test();//100
    test(2);//2
}
  • 定義的時候從右向左,調(diào)用的時候從左向右依次調(diào)用。
void test(int a=100)
{
    std::cout<<"test"<<a<<std::cout;
}
void test()
{
    std::cout<<"test asd"<<std::cout;
}
int main()
{
    test();//error
}
  • virtual與inline的區(qū)別
    1. 虛函數(shù):在基類成員函數(shù)的聲明前加上virtual關(guān)鍵字,意味著將該成員函數(shù)聲明為虛函數(shù)。
    2. 內(nèi)聯(lián)函數(shù):inline與函數(shù)的定義體放在一起,使該函數(shù)稱為內(nèi)聯(lián)。inline是一種用于實現(xiàn)的關(guān)鍵字,而不是用于聲明的關(guān)鍵字。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容