C 篇之預設引數與函式過載

2021-08-22 07:23:01 字數 1048 閱讀 4480

預設引數的函式

1 呼叫函式時可以不指定全部引數

2 為可以不指定的引數提供預設值

void func(int a = 1,int b ,int c = 3,int d = 4);//error

void func(int a ,int b ,int c = 3,int d = 4);//ok

//void func(int ,int ,int = 3,int = 4);也可以

呼叫的方法規定為:

func(10,15,20,30);//ok呼叫時給出所有實參

func();//error :引數a沒有預設值

func(12,2);//ok 引數c和d 預設

func(2,15, ,20);//error 只能從右至左順序匹配預設

函式過載:

兩個以上的函式取相同的函式名,但是形參的個數或者型別不同,編譯器根據實參和形參的型別及個數的最佳匹配,自動確定呼叫哪乙個函式,這就是函式的過載。

注意兩點:

1 兩個及以上的函式取相同的函式名,2 引數的個數或者型別不同

如果一組過載函式(可能帶有預設引數)都允許相同實參個數的呼叫,將會引起呼叫的二義性,就會報錯。比如:

void func(int);

void func(int , int = 4);

void func(int = 3, int = 4);

func(7);//error,編譯器不知道呼叫了以上三個函式中的哪乙個

func(20,30);//到底呼叫了後面兩個函式中的哪乙個?編譯器也不知道,所以報錯。

常見的c語言頭檔案格式

#ifndef _func_     //防止標頭檔案重複包含

#define _func_

#ifdef _cplusplus //如果編譯器是c++的,則按照c語言的規則去進行函式名稱的解析,不要按照函式過載

extern "c"

#endif

#endif

c 函式過載與預設引數

函式過載 是指同一作用域內,一組具有相同函式名,不同引數列表的函式,構成過載關係,這組名稱相同的函式成為過載函式。過載函式通常完成的功能相近,這樣做的好處是減少了函式名的數量,提高了程式的可讀性。注意 過載與函式的返回型別無關,引數相同僅返回值不同的兩個函式不構成過載關係,與形參名字無關,只與引數的...

預設引數與函式過載

預設引數是 宣告或定義函式時為函式的 引數指定乙個預設值。在呼叫該函式時,如果沒有指定實參則採用該預設值,否則使用指定的實參。void testfunc int a 0 注意 如果生命與定義位置同時出現,恰巧兩個位置提供的值不同,那編譯器就無法確定到底該用那個預設值。3.預設值必須是常量或者全域性變...

預設引數與函式過載

一.預設引數 形參a和b都帶有預設值 使用者用掉該函式時,沒傳參,就用預設值。傳參就用所傳值。1,分類 1.全預設引數 每個引數都帶有預設值 void t int a 1,int b 2,int c 3 int t 不能過載,引數列表相同,不能過載。注意 如果兩個函式僅僅是返回型別不同,則不能構過載...