重載函數是函數的一種特殊狀況,重載函數經常使用來實現功能相似而所處理的數據類型不一樣的問題。重載函數(over loaded function)是C++支持的一種特殊函數,今天小編就帶你們深刻了解VC++的重載函數。編程
VC++的重載函數函數
通常狀況下,你們都應該但願在構造pt這一個對象的同一時間,傳遞y以及X這兩個座標的值把。那麼這樣的話,咱們就能夠再定義多一個構造函數了。爲了你們能夠更加深刻的理解,你們能夠參考下面的示範例子喲。具體的程序代碼,以下圖:學習
你們有沒有觀察到,在這一個應用程序中,有多少個構造函數呢?沒錯,答案就是兩個。並且這兩個構造函數的函數名是相同的,僅僅只是參數的個數以及類型不相同而已。那麼其實這樣子在C語言中是並不容許的,然而在C++中上面的定義是合理合法的,那麼這就是咱們今天所要學習的C++中函數的重載(即overload)。當咱們在執行main函數裏面的pointpt(5,5)這一條語句的時候,C++編譯器就會根據參數的個數以及參數的類型來肯定一下究竟執行哪個構造函數先。那麼在這裏的話,咱們就要執行一下point(inta,intb)這一個函數的。對象
如今小編再來爲你們介紹一下,構成重載函數須要哪些條件吧?具體須要的條件以下:函數的參數類型、參數個數不同。只有知足以上的條件,才能夠真正的構成函數的重載。那麼如今咱們就來練習一下,嘗試着分析下面的兩種狀況吧,看一看這兩種狀況是否是能夠構成函數的重載?blog
第一種狀況:get
①void output(inta);編譯器
②void output(inta,intb=5);io
第二種狀況:編譯
①int output();function
②void output();
對於第一種狀況的話,當咱們在應用程序裏面調用output(5)的時候,首先應該調用的到底是哪個函數呢?那麼調用(2)的函數是否能夠呢?答案是:固然能夠啦。由於(2)的函數第二個參數是擁有一個默認值的。那麼在這裏就能夠認爲是調用的是第二個函數了;固然啦,咱們在這裏也是能夠調用(1)的函數。可是咱們在這裏要注意一點,那就是由於調用是有歧義的,因此這一種狀況也是不能夠構成函數的重載。在函數重載的時候,咱們注意要注意一點,那就是函數帶有默認參數的這一種狀況。
那麼如今咱們就來討論一下第二種狀況吧。當咱們在應用程序中調用output()函數的時候,你們有沒有想過應該是調用的是哪個函數的呢?在這裏,咱們要注意咯。那就是隻有函數的返回類型不同,這是不能夠構成函數的重載的。通過上面的一番討論,對於VC++的重載函數你都理解了嗎?