c++ 函数签名
【例 1】
void f( ) void g( ) void f(int)【例 2】
void f( int) void f(double)【例 3】
void f(double, int) void f(int, double)為了理解函數簽名的含義,我們先來看一下上面的三個例子:
- 例 1 中,函數 f() 和函數 g() 的函數名不同,因此這兩個函數的函數簽名不同。f() 函數和 f(int) 函數一個有參數,一個沒有參數,函數簽名同樣不同。g() 函數和 f(int) 函數函數名不同并且函數參數個數也不同,因此它們的函數簽名也是不相同的。
- 例 2 中,兩個函數的函數名相同,參數個數相同,但是參數的類型不同,因此這兩個函數的函數簽名也不相同。
- 例 3 中,兩個函數的函數名相同,參數個數相同,參數類型也相同,都是一個 double 類型和一個 int 類型。但是,由于函數參數的順序不相同,這兩個函數的函數簽名同樣是不相同的。
- 需要注意的是,函數簽名并不包含函數返回值部分,如果兩個函數僅僅只有函數返回值不同,那么系統是無法區分這兩個函數的,此時編譯器會提示語法錯誤。
【例 4】
int f(int, double) void f(int, double)- 在本例中,兩個函數的函數名相同,參數個數相同,參數類型相同,參數順序相同,這兩個函數的函數簽名就是相同的。雖然兩個函數的返回值類型不同,僅憑函數返回值,編譯器無法區分這兩個函數,編譯器提示語法錯誤。
總結
- 上一篇: C++多态的概念及前提条件(最精辟)
- 下一篇: c++ 重载