函數重載、函數指針、函數默認參數

函數重載

定義:

用同一個函數名定義不同的函數,當函數名和不同的參數搭配時函數的含義不同

注意事項:

         重載函數在本質上是相互獨立的不同函數(靜態鏈編)

         重載函數的函數類型是不同的

         函數返回值不能作爲函數重載的依據

         函數重載是由函數名和參數列表決定的

函數重載至少滿足下面的一個條件:

         參數個數不同

         參數類型不同

         參數順序不同

代碼示例:

int func(int x)
{
	return x;
}

int func(int a, int b)
{
	return a + b;
}

int func(int a,int b,int c){
    return a+b+c;
}

函數重載+函數默認參數

可能造成二義性:

代碼示例:

int func(int a, int b, int c = 0)
{
	return a * b * c;
}

int func(int a, int b)
{
	return a + b;
}

如果我使用一下代碼就會產生二義性,無法通過:
c = func(1, 2);
因爲由於有函數默認參數的存在,func(1,2)對於調用那個函數無法確定

函數重載和函數指針結合

函數指針:

 函數具有可賦值給指針的物理內存地址,一個函數的函數名就是一個指針,它指向函數的代碼。一個函數的地址是該函數的進入點,也是調用函數的地址。函數的調用可以通過函數名,也可以通過指向函數的指針來調用。函數指針還允許將函數作爲變元傳遞給其他函數。

定義方式:

類型 (*指針變量名)(參數列表)

代碼示例:注意區分指針函數與函數指針

函數指針:
int (*p) (int i,int j);
指針函數:
int *p(int i,int j){}

函數重載與函數指針

         當使用重載函數名對函數指針進行賦值時

         根據重載規則挑選與函數指針參數列表一致的候選者

         嚴格匹配候選者的函數類型與函數指針的函數類型

代碼示例:

int func(int a, int b)
{
	return a + b;
}
int func(char a,char b){
   return (a-'0')+(b-'0'); 
}

int (* PFUNC)(int a,int b);

int c=0;
PFUNC =func;
根據參數列表來選擇執行那個函數
c=PFUNC(10,20);

後續更新:

函數重載

 

函數重寫

 

函數重定義

 

 

參考博客:

https://blog.csdn.net/str999_cn/article/details/78591369

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章