C 學習 過載和預設引數

2021-09-30 07:19:59 字數 866 閱讀 6949

過載簡單來說就是依次多義。所謂函式過載是指同 乙個函式名可以對應著多個函式的實現

主要是兩個原因:

1. 不想使用printf_int(), printf_char(), printf_float() 來列印不同資料型別的字元。類似這樣的問題,可以使用過載來解決。

2. 建構函式

因為建構函式的名字預先由類的名字確定,所以只 能有乙個建構函式名。但如果我們想用幾種方法來建立乙個物件時該怎麼辦呢?例如建立乙個類,它可以用標準的方法初始化,也可以從檔案中讀取資訊來初始化, 我們就需要兩個建構函式,乙個不帶引數(預設建構函式),另乙個帶乙個字串作為引數,

以表示用於初始化物件的檔案的名字。所以函式重 載的本質就是允許函式同名。在這種情況下,建構函式是以不同的引數型別被呼叫的。

其實是在編譯的時候,函式名會被轉換成如下的格 式進行匹配:printf(int int)=>prinf_int()

因為使用者可以不處理返回值,如下

void f()和int f()兩個函式,使用者在呼叫的時候可以直接寫成

f(),如果使用返回值過載,那麼編譯器將不知道該使用那個函式。

預設引數為什麼只能發在後面?

f(int i, int j, int k=1, int l=0)  為什麼預設引數要放在後面?

例如: f(int i, int j=0, int k, int l =0)不能處理 f(3, 4, 5),編譯器無法判斷哪個數預設引數。

預設引數只在說明的時候指出,定義處不重新定義,但通常要加乙個注釋.

問個小問題,在乙個類中有下面兩個函式

void add(int i=1) ;

void add() ;

當使用add()時,會呼叫那乙個?

結論是編譯不能通過。

c 函式過載和預設引數

函式過載 是c 語言物件導向的特點 多型的一種表現形式 又稱為靜多型 過載的規則 1 函式名相同。2 引數個數不同,引數型別不同,引數順序不同,均可構成過載。3 僅返回值型別不同則不可以構成過載。void func int a ok void func char a ok void func int...

c 預設引數 c 過載

include using std cout using std endl 預設引數的設定只能採用從右到左的順序 int add int a 1,int b 0 在設定預設引數時,要盡量避免二義性 int add int a,int b,int c int main void 執行截圖 c 支援函式...

C 函式過載, 預設引數

在我們的自然語言當中,乙個詞在不同的情景之下可能會有多重不同的含義,但是我們可以通過合理地判斷來確定該詞的真正含義,這種情況,我們可以說該詞被 過載 了.關於函式過載的概念 函式過載其實就是函式的一種特殊的情況,在我們的c 中允許在同一作用域當中宣告幾個功能類似的同名函式,但是這個同名函式的形參列表...