C 對C的函式拓展

2022-04-15 17:33:08 字數 1867 閱讀 7633

一,內聯函式

1.內聯函式的概念

c++中的const常量可以用來代替巨集常數的定義,例如:用const int a = 10來替換# define a 10。那麼c++中是否有什麼解決方案來替代巨集**片段呢?c++中推薦使用內聯函式代替巨集**片段,c++中使用inline關鍵字宣告內聯函式。注意:內聯函式宣告時inline關鍵字必須和函式定義結合在一起,否則編譯器會直接忽略內聯請求。

2.內聯函式示例

# includeusing

namespace

std;

/*巨集定義函式方式

*/# define fun1(a,b) ((a)

<(b)?(a):(b))

/*內聯定義函式方式

*/inline

int fun2(int a,int

b)int

main()

3.內聯函式的說明

二,預設引數

1.預設引數例項

c++中可以在函式定義時為函式引數設定預設值,當在進行函式呼叫的時候,如果沒有指定這個引數的值,編譯器會自動用預設值替換。

# includeusing

namespace

std;

void print(int a = 3

)int

main()

2.預設引數的規則

當函式的引數中使用了預設引數,那麼該引數後面的引數只能為預設引數,而不能為普通引數(因為在函式呼叫的時候,無法明確要傳遞的引數)。

三,佔位引數

1.函式佔位引數例項

c++中佔位引數只有引數型別的宣告,而沒有引數的名稱,一般情況下,在函式體內無法使用佔位引數。

# includeusing

namespace

std;

/*函式佔位引數

*/void test(int a, int b, int

)int

main()

2.佔位引數和預設引數結合使用

如果佔位引數和預設引數結合使用,則在函式呼叫的時候可以傳遞該佔位引數也可以不傳遞該佔位的值。其意義是為了以後程式的拓展留下線索,同時相容c語言的一些不規範語法。

# includeusing

namespace

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函式預設引數的規則 只有引數列表後面部分的引數才可以提供預設引數值 一旦在乙個函式呼叫中開始使用預設引數值,那麼這個引數後的所有引數都必須使用預設引...