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ù)體限制
- 內(nèi)聯(lián)函數(shù)中,不能有結(jié)構(gòu)復(fù)雜的結(jié)構(gòu)控制語句
- 不能出現(xiàn)遞歸函數(shù)
- 內(nèi)聯(lián)函數(shù)只適合1-5行小函數(shù)
- 內(nèi)聯(lián)函數(shù)與宏定義
- 宏定義可以代替小函數(shù)定義,但是有缺陷
- 宏只是告訴編譯器簡單的替代代碼,不檢查參數(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ū)別
- 虛函數(shù):在基類成員函數(shù)的聲明前加上virtual關(guān)鍵字,意味著將該成員函數(shù)聲明為虛函數(shù)。
- 內(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ù)。