W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
函數(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
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: