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)存劃分聪全,省空間費(fèi)時(shí)間辅辩。內(nèi)聯(lián)函數(shù)調(diào)用幾次就占用幾次空間玫锋,節(jié)省時(shí)間,同宏一樣谦炬。
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ù)類型,
往往造成語句的實(shí)際結(jié)果不能代表程序員的意圖
宏的作用可以用內(nèi)聯(lián)函數(shù)代替:
重載函數(shù)
- 定義:兩個(gè)以上的函數(shù)础爬,取相同的函數(shù)名看蚜,但是形參的個(gè)數(shù)或者類型不同赖条,編譯器根據(jù)實(shí)參和形參的類型及個(gè)數(shù)的最佳匹配纬乍,自動確定調(diào)用哪個(gè)函數(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ù)的重載順序
- 尋找一個(gè)嚴(yán)格的匹配茧泪,如果找到了就是那個(gè)
- 通過內(nèi)部轉(zhuǎn)換尋求一個(gè)匹配队伟,找到了就用
- 通過用戶定義的轉(zhuǎn)換尋求一個(gè)匹配幽勒,若能查出有唯一的的一組轉(zhuǎn)換啥容,就用那個(gè)函數(shù)
遞歸函數(shù)
- 定義:自調(diào)用函數(shù),在函數(shù)體
- 遞歸函數(shù)的評價(jià)
- 遞歸增加了系統(tǒng)開銷
- 遞歸的目的是簡化程序設(shè)計(jì)击吱,使程序易讀
- 現(xiàn)代程序設(shè)計(jì)的目標(biāo)主要是可讀性好
- 對于嵌入式來說遥昧,使用遞歸要慎重炭臭。
參數(shù)默認(rèn)的函數(shù)
- 調(diào)用函數(shù)時(shí)可以不指定該全部參數(shù)
- 為不指定參數(shù)賦默認(rèn)值
void test(int a=100)
{
std::cout<<"test="<<b<<std::endl;
}
int main()
{
test();//100
test(2);//2
}
- 定義的時(shí)候從右向左,調(diào)用的時(shí)候從左向右依次調(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是一種用于實(shí)現(xiàn)的關(guān)鍵字板甘,而不是用于聲明的關(guān)鍵字党瓮。
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者