C++函數重載詳解及實例代碼。本站提示廣大學習愛好者:(C++函數重載詳解及實例代碼)文章只能為提供參考,不一定能成為您想要的結果。以下是C++函數重載詳解及實例代碼正文
C++函數的重載
界說
在統一個感化域中,函數名雷同,函數的參數列表分歧的函數之間組成重載關系,在分歧感化域中的同名函數遵守標識符隱蔽的准繩
ATTENTION:重載與函數的前往值類型有關,由於聲明一個函數不須要前往類型,所以沒法用來辨別哪一個函數
常函數和通俗成員函數之間組成重載,重載經常對象挪用常成員函數,普通對象挪用普通成員函數
class A{ … public: void getVal()const{…} void getVal(){…} }; int main(){ const A a; A b; a.getVal(); //常函數 b.getVal(); //通俗成員函數 }
分歧namespace中的函數也能夠經由過程名字空間指令/名字空間聲明的方法讓他們在統一個感化域,進而組成重載關系
//overloaded functions in different namespaces
#include<iosteam> using namespace std; namespace ns1{ void fa(int i){cout<<"in ns1:i="<<i<<endl;} } namespace ns2{ void fa(double d){cout<<"in ns2:i="<<d<<endl;} } int main(){ //應用namespace 指令的方法 using namespace ns1; using namespace ns2; fa(10); fa(3.14); return 0; }
重載婚配准繩
完整婚配>常量轉換/常量婚配>進級轉換>尺度轉換>自界說轉換>省略號婚配
Note:編程中,盡可能做到完整婚配,假如其實不克不及完整婚配,普通會依據上述准繩停止選擇
重載道理
C++編譯器是經由過程對函數停止換名,將參數列表信息表現在底層函數名中,從而完成函數的重載,匯編函數名依照 <感化域+前往類型+函數名+參數列表> 的方法表現在匯編中,eg:_Z4showii:
感激浏覽,願望能贊助到年夜家,感謝年夜家對本站的支撐!