詳解C++函數類型與重載函數

1.

首先對重載函數,明確函數的返回類型不能決定重載函數的類別,即

int F(int ,int) ;//一個返回 int 類型的函數
void F(int ,int);//一個無返回值的函數
//兩者形參列表相同,返回值類型不同,但兩者不構成重載函數 

2.

註意形參列表中的默認值,使用含默認參數的重載函數時可能會產生二義性。例:

int a = 0;
int Max(int,int);
int Max(int,int,int = 0);
//則對Max(3,5)的調用會報錯
 a = Max(3,5);           //錯誤 

另外,對默認參數,應該在函數名第一次給出的時候指定,通常在函數原型中。若已在函數原型中指定默認參數,則函數定義時不能重復給出。

問題:

在一道題中我看到瞭這樣一個問題,簡述起來就是讓你調用一個值傳遞的重載函數和一個引用傳遞的重載函數,

#include<iostream>
using namespace std;
void F(int &a, int &b) {
	a = a + b;
	cout << a<<endl;
}
int F(int a, int b,) {
	return a + b;
}
int main(){
cout<<F(a,b);
F(a,b);
}

此時調用兩個F函數就會報錯,那如何改變函數類型來避免函數調用不明確呢?

我是這樣做的,

#include<iostream>
using namespace std;
void F(int &a, int &b) {
	a = a + b;
	cout << a<<endl;
}
int F(int a, int b,int c) {
	return a + b;
}
int main(){
int a = 10;
int b = 20;
cout << F(a, b,1)<<endl;
	F(a,b);
}

即通過一個無用變量來避免類型相似。

總結

本篇文章就到這裡瞭,希望能夠給你帶來幫助,也希望您能夠多多關註WalkonNet的更多內容!

推薦閱讀: