詳解C++函數(shù)類型與重載函數(shù)
1.首先對(duì)重載函數(shù),明確函數(shù)的返回類型不能決定重載函數(shù)的類別,即
int F(int ,int) ;//一個(gè)返回 int 類型的函數(shù) void F(int ,int);//一個(gè)無(wú)返回值的函數(shù) //兩者形參列表相同,返回值類型不同,但兩者不構(gòu)成重載函數(shù)
2.注意形參列表中的默認(rèn)值,使用含默認(rèn)參數(shù)的重載函數(shù)時(shí)可能會(huì)產(chǎn)生二義性。例:
int a = 0; int Max(int,int); int Max(int,int,int = 0); //則對(duì)Max(3,5)的調(diào)用會(huì)報(bào)錯(cuò) a = Max(3,5); //錯(cuò)誤
另外,對(duì)默認(rèn)參數(shù),應(yīng)該在函數(shù)名第一次給出的時(shí)候指定,通常在函數(shù)原型中。若已在函數(shù)原型中指定默認(rèn)參數(shù),則函數(shù)定義時(shí)不能重復(fù)給出。
問(wèn)題:
在一道題中我看到了這樣一個(gè)問(wèn)題,簡(jiǎn)述起來(lái)就是讓你調(diào)用一個(gè)值傳遞的重載函數(shù)和一個(gè)引用傳遞的重載函數(shù),
#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);
}
此時(shí)調(diào)用兩個(gè)F函數(shù)就會(huì)報(bào)錯(cuò),那如何改變函數(shù)類型來(lái)避免函數(shù)調(diào)用不明確呢?
我是這樣做的,
#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);
}
即通過(guò)一個(gè)無(wú)用變量來(lái)避免類型相似。
總結(jié)
本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
C++實(shí)現(xiàn)算法兩個(gè)數(shù)字相加詳解
這篇文章主要介紹了C++實(shí)現(xiàn)算法兩個(gè)數(shù)字相加詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07
visual studio2019的安裝以及使用圖文步驟詳解
這篇文章主要介紹了visual studio2019的安裝以及使用圖文步驟詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03
C++訪問(wèn)std::variant類型數(shù)據(jù)的幾種方式小結(jié)
std::variant是?C++17中引入的一個(gè)新的類模板,提供了一種存儲(chǔ)不同類型的值的方式,本文主要介紹了C++訪問(wèn)std::variant類型數(shù)據(jù)的幾種方式小結(jié),具有一定的參考價(jià)值,感興趣的可以了解一下2024-02-02

