內聯函數:函數調用是有時間開銷的。如果函數本身只有幾條語句,執行非常快,而且函數被反復執行很多次,相比之下調用函數所產生的這個開銷就會顯得比較大。
為了減少函數調用的開銷,引入了內聯函數機制。編譯器處理對內聯函數的調用語句時,是將整個函數的代碼插入到調用語句處,而不會產生調用函數的語句。
重載函數:一個或多個函數,名字相同,然而參數個數或參數類型不相同,這叫做函數的重載。編譯器根據調用語句的中的實參的個數和類型判斷應該調用哪個函數。
(1) int Max(double f1,double f2) { } (2) int Max(int n1,int n2) { } (3) int Max(int n1,int n2,int n3) { } Max(3.4,2.5); //調用 (1) Max(2,4); //調用 (2) Max(1,2,3); //調用 (3) Max(3,2.4); //error,二義性,既可以類型轉換後調用(1),也可以類型轉換後調用(2)
C++中,定義函數的時候可以讓最右邊的連續若干個參數有缺省值,那麼調用函數的時候,若相應位置不寫參數,參數就是缺省值。
函數參數可缺省的目的在於提高程序的可擴充性。即如果某個寫好的函數要添加新的參數,而原先那些調用該函數的語句,未必需要使用新增的參數,那麼為了避免對原先那些函數調用語句的修改,就可以使用缺省參數。
面向對象的四個基本概念:抽象、封裝、繼承、多態
抽象:將一類客觀事物的共同屬性歸納出來,形成一個數據結構。將這類事物所能進行的一些行為和操作歸納起來形成函數,這些函數可以來操作具體的數據結構。
繼承:將數據結構和算法對應地捆綁在一起,形成類。