深入瞭解VC 的過載函式

NO IMAGE

過載函式是函式的一種特殊情況,過載函式常用來實現功能類似而所處理的資料型別不同的問題。過載函式(over loaded function)是C 支援的一種特殊函式,今天小編就帶大家深入瞭解VC 的過載函式。

深入瞭解VC  的過載函式_VC  _程式設計程式碼_建構函式_課課家

  VC 的過載函式

  一般情況下,大家都應該希望在構造pt這一個物件的同一時間,傳遞y以及X這兩個座標的值把。那麼這樣的話,我們就可以再定義多一個建構函式了。為了大家可以更加深入的理解,大家可以參考下面的示範例子喲。具體的程式程式碼,如下圖:

示範例子

  大家有沒有觀察到,在這一個應用程式中,有多少個建構函式呢?沒錯,答案就是兩個。而且這兩個建構函式的函式名是相同的,僅僅只是引數的個數以及型別不相同而已。那麼其實這樣子在C語言中是並不允許的,然而在C 中上面的定義是合理合法的,那麼這就是我們今天所要學習的C 中函式的過載(即overload)。當我們在執行main函式裡面的pointpt(5,5)這一條語句的時候,C 編譯器就會根據引數的個數以及引數的型別來確定一下究竟執行哪一個建構函式先。那麼在這裡的話,我們就要執行一下point(inta,intb)這一個函式的。

  現在小編再來為大家介紹一下,構成過載函式需要哪些條件吧?具體需要的條件如下:函式的引數型別、引數個數不一樣。只有滿足以上的條件,才可以真正的構成函式的過載。那麼現在我們就來練習一下,嘗試著分析下面的兩種情況吧,看一看這兩種情況是不是可以構成函式的過載?

  第一種情況:

  ①void output(inta);

  ②void output(inta,intb=5);

  第二種情況:

  ①int output();

  ②void output();

  對於第一種情況的話,當我們在應用程式裡面呼叫output(5)的時候,首先應該呼叫的究竟是哪一個函式呢?那麼呼叫(2)的函式是否可以呢?答案是:當然可以啦。因為(2)的函式第二個引數是擁有一個預設值的。那麼在這裡就可以認為是呼叫的是第二個函式了;當然啦,我們在這裡也是可以呼叫(1)的函式。但是我們在這裡要注意一點,那就是因為呼叫是有歧義的,所以這一種情況也是不可以構成函式的過載。在函式過載的時候,我們注意要注意一點,那就是函式帶有預設引數的這一種情況。

  那麼現在我們就來討論一下第二種情況吧。當我們在應用程式中呼叫output()函式的時候,大家有沒有想過應該是呼叫的是哪一個函式的呢?在這裡,我們要注意咯。那就是隻有函式的返回型別不一樣,這是不可以構成函式的過載的。經過上面的一番討論,對於VC 的過載函式你都理解了嗎?