C++之默認(rèn)參數(shù)詳解
一、C++ 默認(rèn)參數(shù)
通常情況下,函數(shù)在調(diào)用時(shí),形參從實(shí)參那里取得值。對于多次調(diào)用同一函數(shù)同一實(shí)參時(shí),C++給出了更簡單的處理辦法。給形參以默認(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)文章
C語言 哈希查找詳解(哈希表的創(chuàng)建、處理沖突、查找等)
哈希表是一種非常重要的數(shù)據(jù)結(jié)構(gòu),并在大量的計(jì)算機(jī)科學(xué)和工程應(yīng)用中發(fā)揮重要作用,了解哈希表的原理和實(shí)現(xiàn)方式,將有助于我們更好地理解這個(gè)數(shù)據(jù)結(jié)構(gòu)及如何應(yīng)用它來解決實(shí)際問題,這篇文章主要介紹了C語言 哈希查找(哈希表的創(chuàng)建、處理沖突、查找等),需要的朋友可以參考下2024-01-01Qt利用QState狀態(tài)機(jī)實(shí)現(xiàn)控件互斥操作詳解
這篇文章主要為大家詳細(xì)介紹了Qt如何利用QState狀態(tài)機(jī)實(shí)現(xiàn)控件互斥操作,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2022-12-12C/C++?QT實(shí)現(xiàn)解析JSON文件的示例代碼
JSON是一種輕量級的數(shù)據(jù)交換格式,它是基于ECMAScript的一個(gè)子集,使用完全獨(dú)立于編程語言的文本格式來存儲(chǔ)和表示數(shù)據(jù)。這篇文章主要介紹了QT實(shí)現(xiàn)解析JSON文件的示例代碼,需要的可以參考一下2022-01-01c++結(jié)合opencv如何實(shí)現(xiàn)讀取多張圖片并顯示
這篇文章主要介紹了c++結(jié)合opencv如何實(shí)現(xiàn)讀取多張圖片并顯示問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11