C++之默認(rèn)參數(shù)詳解
一、C++ 默認(rèn)參數(shù)
通常情況下,函數(shù)在調(diào)用時(shí),形參從實(shí)參那里取得值。對(duì)于多次調(diào)用同一函數(shù)同一實(shí)參時(shí),C++給出了更簡(jiǎn)單的處理辦法。給形參以默認(rèn)值,這樣就不用從實(shí)參那里取值了。
1.舉例
1.單個(gè)參數(shù)
#include <iostream>
#include <ctime>
using namespace std;
void weatherForcast(char * w="sunny")
{
time_t t = time(0);
char tmp[64];
strftime(tmp,sizeof(tmp), "%Y/%m/%d %X %A ",localtime(&t) );
cout<<tmp<< "today is weahter "<<w<<endl;
}
int main()
{
//sunny windy cloudy foggy rainy
weatherForcast();
weatherForcast("rainny");
weatherForcast();
return 0;
}

2.多個(gè)參數(shù)
#include <iostream>
using namespace std;
float volume(float length, float weight = 4,float high = 5)
{
return length*weight*high;
}
int main()
{
float v = volume(10);
float v1 = volume(10,20);
float v2 = volume(10,20,30);
cout<<v<<endl;
cout<<v1<<endl;
cout<<v2<<endl;
return 0;
}

2.規(guī)則
1.規(guī)定默認(rèn)參數(shù)必須從函數(shù)參數(shù)的右邊向左邊使用
正確聲明: void fun1(int a, int b=10); void fun2(int a, int b=10, int c=20); 錯(cuò)誤聲明: void fun3(int a=5, int b, int c); void fun4(int a, int b=5, int c);
2.默認(rèn)參數(shù)不能在聲明和定義中同時(shí)出現(xiàn)
錯(cuò)誤
聲明:
void fun1(int a=10);
定義:
void fun1(int a=10){......}
正確
聲明:
void fun2(int a=10);
定義:
void fun2(int a){......}
或者
聲明:
void fun2(int a);
定義:
void fun2(int a=10){......}
3.函數(shù)聲明和定義一體時(shí),默認(rèn)參數(shù)在定義或聲明處都可以。聲明在前,定義在后的話,默認(rèn)參數(shù)在聲明處
4.一個(gè)函數(shù),不能又作重載,又作默認(rèn)參數(shù)的函數(shù)。當(dāng)你少寫一個(gè)參數(shù)時(shí),系統(tǒng)無法確認(rèn)時(shí)重載還是默認(rèn)函數(shù)。
void print(int a)
{
}
void print(int a,int b =10)
{
}
int main()
{
print(10);
return 0;
}
error:main.cpp:14: error: call of overloaded 'print(int)' is ambiguous
print(10);
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
關(guān)于C++中vector的兩個(gè)小tips分享
這篇文章主要給大家介紹了關(guān)于C++中vector的兩個(gè)小tips,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用C++具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05
基于C++ bitset常用函數(shù)及運(yùn)算符(詳解)
下面小編就為大家?guī)硪黄贑++ bitset常用函數(shù)及運(yùn)算符(詳解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-11-11
Windows安裝配置C/C++(VS2017)OpenSSL開發(fā)環(huán)境配置教程
這篇文章主要為大家詳細(xì)介紹了Windows安裝配置C/C++,OpenSSL開發(fā)環(huán)境配置教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07
深入淺析C/C++語言結(jié)構(gòu)體指針的使用注意事項(xiàng)
這篇文章主要介紹了C/C++語言結(jié)構(gòu)體指針的使用,大家都知道指針在32位系統(tǒng)占用4Byte,在64位系統(tǒng)占用8Byte,下面看下c語言代碼例子2021-12-12
淺析C++中memset,memcpy,strcpy的區(qū)別
本篇文章是對(duì)C++中memset,memcpy,strcpy的區(qū)別進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-07-07

