C++函數(shù)重載詳解及實例代碼
C++函數(shù)的重載
定義
在同一個作用域中,函數(shù)名相同,函數(shù)的參數(shù)列表不同的函數(shù)之間構成重載關系,在不同作用域中的同名函數(shù)遵循標識符隱藏的原則
ATTENTION:重載與函數(shù)的返回值類型無關,因為聲明一個函數(shù)不需要返回類型,所以無法用來區(qū)分哪個函數(shù)
常函數(shù)和普通成員函數(shù)之間構成重載,重載時常對象調用常成員函數(shù),一般對象調用一般成員函數(shù)
class A{ … public: void getVal()const{…} void getVal(){…} }; int main(){ const A a; A b; a.getVal(); //常函數(shù) b.getVal(); //普通成員函數(shù) }
不同namespace中的函數(shù)也可以通過名字空間指令/名字空間聲明的方式讓他們在同一個作用域,進而構成重載關系
//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:編程中,盡量做到完全匹配,如果實在不能完全匹配,一般會根據(jù)上述原則進行選擇
重載原理
C++編譯器是通過對函數(shù)進行換名,將參數(shù)列表信息體現(xiàn)在底層函數(shù)名中,從而實現(xiàn)函數(shù)的重載,匯編函數(shù)名按照 <作用域+返回類型+函數(shù)名+參數(shù)列表> 的方式體現(xiàn)在匯編中,eg:_Z4showii:
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
相關文章
C語言中getopt()函數(shù)和select()函數(shù)的使用方法
這篇文章主要介紹了C語言中getopt()函數(shù)和select()函數(shù)的使用方法,是C語言入門學習中的基礎知識,需要的朋友可以參考下2015-09-09c++11 符號修飾與函數(shù)簽名、函數(shù)指針、匿名函數(shù)、仿函數(shù)、std::function與std::bind
這篇文章主要介紹了c++11 符號修飾與函數(shù)簽名、函數(shù)指針、匿名函數(shù)、仿函數(shù)、std::function與std::bind,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-05-05