一,內聯函式
1.內聯函式的概念
c++中的const常量可以用來代替巨集常數的定義,例如:用const int a = 10來替換# define a 10。那麼c++中是否有什麼解決方案來替代巨集**片段呢?c++中推薦使用內聯函式代替巨集**片段,c++中使用inline關鍵字宣告內聯函式。注意:內聯函式宣告時inline關鍵字必須和函式定義結合在一起,否則編譯器會直接忽略內聯請求。
2.內聯函式示例
# includeusingnamespace
std;
/*巨集定義函式方式
*/# define fun1(a,b) ((a)
<(b)?(a):(b))
/*內聯定義函式方式
*/inline
int fun2(int a,int
b)int
main()
3.內聯函式的說明
二,預設引數
1.預設引數例項
c++中可以在函式定義時為函式引數設定預設值,當在進行函式呼叫的時候,如果沒有指定這個引數的值,編譯器會自動用預設值替換。
# includeusingnamespace
std;
void print(int a = 3
)int
main()
2.預設引數的規則
當函式的引數中使用了預設引數,那麼該引數後面的引數只能為預設引數,而不能為普通引數(因為在函式呼叫的時候,無法明確要傳遞的引數)。
三,佔位引數
1.函式佔位引數例項
c++中佔位引數只有引數型別的宣告,而沒有引數的名稱,一般情況下,在函式體內無法使用佔位引數。
# includeusingnamespace
std;
/*函式佔位引數
*/void test(int a, int b, int
)int
main()
2.佔位引數和預設引數結合使用
如果佔位引數和預設引數結合使用,則在函式呼叫的時候可以傳遞該佔位引數也可以不傳遞該佔位的值。其意義是為了以後程式的拓展留下線索,同時相容c語言的一些不規範語法。
# includeusingnamespace
std;
/*函式佔位引數和預設引數結合
*/void test(int a, int b, int = 3
)int
main()
四,函式的過載
1.函式過載的概念
所謂的函式過載就是用同乙個函式名,定義不同的函式。
2.函式過載的規則
1.函式的名稱必須一致。
2.函式的引數個數不同。
3.函式引數的型別不同。
4.函式引數的型別順序不一致。
3.函式的返回值是否是函式過載的判斷標準?
答案是否,函式的返回值不能夠作為函式過載的標準,例如我們定義乙個簡單的函式void fun()和int fun(),當我在main()函式中呼叫fun();編譯器無法判斷是呼叫的第乙個還是第二個,存在二義性,因此會報錯。
c 對c的拓展 函式過載
函式過載 c 中函式名可相同,可有多個函式名相同的函式存在 過載 名字相同意義不同 本質 c 編譯器根據型別來修飾函式 條件 1 同一作用域 2 引數個數 型別 順序不同 注意 1 返回值型別不能作為過載條件 2 預設引數可存在二義性,存在二義性時報錯,要避免其他二義性行為 include usin...
C 對C的拓展
目錄 一 bool型別關鍵字 二 引用 三 輸入輸出 四 函式引數 五 string類 六 左值 c 在c語言的基礎型別上新增了布林型別 bool bool可取的值有兩個 true false,占用乙個位元組。true代表真值,編譯器內部用1來表示 false代表非真值,編譯器內部用0來表示。inc...
C 對C的函式拓展 預設引數
1 c 中可以在函式宣告時為引數提供乙個預設值,當函式呼叫時沒有指定這個引數的值,編譯器會自動用預設值代替 void myprint int x 3 2函式預設引數的規則 只有引數列表後面部分的引數才可以提供預設引數值 一旦在乙個函式呼叫中開始使用預設引數值,那麼這個引數後的所有引數都必須使用預設引...