C++基礎
函數
內聯函數
- 內聯函數
- 非常短的函數適合于內聯
- 函數體會到插入到發生函數調用的地方
- 普通函數調用多次也只有一塊內存劃分,省空間費時間。內聯函數調用幾次就占用幾次空間,節省時間,同宏一樣。
inline void fn()
{
std::cout<<"hello world"<<std::endl;
}
int main()
{
fn();
fn();
}
- 內聯函數的函數體限制
- 內聯函數中,不能有結構復雜的結構控制語句
- 不能出現遞歸函數
- 內聯函數只適合1-5行小函數
- 內聯函數與宏定義
- 宏定義可以代替小函數定義,但是有缺陷
- 宏只是告訴編譯器簡單的替代代碼,不檢查參數類型,
往往造成語句的實際結果不能代表程序員的意圖
宏的作用可以用內聯函數代替:
重載函數
- 定義:兩個以上的函數,取相同的函數名,但是形參的個數或者類型不同,編譯器根據實參和形參的類型及個數的最佳匹配,自動確定調用哪個函數,這就是函數重載。
#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
}
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
- 內聯函數的重載順序
- 尋找一個嚴格的匹配,如果找到了就是那個
- 通過內部轉換尋求一個匹配,找到了就用
- 通過用戶定義的轉換尋求一個匹配,若能查出有唯一的的一組轉換,就用那個函數
遞歸函數
- 定義:自調用函數,在函數體
- 遞歸函數的評價
- 遞歸增加了系統開銷
- 遞歸的目的是簡化程序設計,使程序易讀
- 現代程序設計的目標主要是可讀性好
- 對于嵌入式來說,使用遞歸要慎重。
參數默認的函數
- 調用函數時可以不指定該全部參數
- 為不指定參數賦默認值
void test(int a=100)
{
std::cout<<"test="<<b<<std::endl;
}
int main()
{
test();//100
test(2);//2
}
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的區別
- 虛函數:在基類成員函數的聲明前加上virtual關鍵字,意味著將該成員函數聲明為虛函數。
- 內聯函數:inline與函數的定義體放在一起,使該函數稱為內聯。inline是一種用于實現的關鍵字,而不是用于聲明的關鍵字。
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。