程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> C++函數重載詳解及實例代碼

C++函數重載詳解及實例代碼

編輯:關於C++

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:

感激浏覽,願望能贊助到年夜家,感謝年夜家對本站的支撐!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved