C++ 函數(shù)重載

2018-03-24 17:44 更新

學(xué)習(xí)C++ - C++函數(shù)重載

函數(shù)多態(tài)性(也稱為函數(shù)重載)允許我們使用不同數(shù)量的參數(shù)來(lái)調(diào)用相同的函數(shù)。

函數(shù)重載可以創(chuàng)建具有相同名稱的多個(gè)函數(shù)。

多態(tài)性意味著具有許多形式。

函數(shù)重載的關(guān)鍵是函數(shù)的參數(shù)列表,也稱為函數(shù)簽名。

如果兩個(gè)函數(shù)以相同的順序使用相同數(shù)量和類型的參數(shù),則它們具有相同的簽名。變量名稱并不重要。

只要函數(shù)具有不同的簽名,C++就可以使用相同的名稱定義兩個(gè)函數(shù)。

參數(shù)的數(shù)量或參數(shù)的類型,或兩者都有所不同。

例子

例如,您可以使用以下原型定義一組print()函數(shù):

void print(const char * str, int width);  // #1 
void print(double d, int width);          // #2 
void print(long l, int width);            // #3 
void print(int i, int width);             // #4 
void print(const char *str);              // #5 

當(dāng)您使用print()函數(shù)時(shí),編譯器會(huì)將您的使用與具有相同簽名的原型相匹配:

print("a", 15);         // use #1 
print("a");             // use #5 
print(2020.0, 11);      // use #2 
print(2020, 12);        // use #4 
print(2020L, 15);       // use #3 

例子


// Overloaded functions. 
#include <iostream> 
using namespace std; 

// function square for int values 
int square( int x ) 
{ 
    cout << "square of integer " << x << " is "; 
    return x * x; 
} // end function square with int argument 

// function square for double values 
double square( double y ) 
{ 
    cout << "square of double " << y << " is "; 
    return y * y; 
} // end function square with double argument 

int main() 
{ 
    cout << square( 7 ); // calls int version 
    cout << endl; 
    cout << square( 7.5 ); // calls double version 
    cout << endl; 
}

上面的代碼生成以下結(jié)果。

注意

以下簽名不能共存。

double cube(double x); 
double cube(double & x); 

函數(shù)匹配過(guò)程確定了常量和非常量變量之間的區(qū)別如下。

void d(char * bits);          // overloaded 
void d(const char *cbits);   // overloaded 

函數(shù)返回類型不是函數(shù)簽名的一部分。

例如,以下兩個(gè)聲明是不兼容的:

  long g(int n, float m);    // same signatures, 
double g(int n, float m);    // hence not allowed 


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)