【C++自我精講】基礎系列三 重載

【C++自我精講】基礎系列三 重載
0 前言

分二部分:函數重載,操做符重載。c++

1 函數重載

函數重載:指在同一名字空間中,函數名稱相同,參數類型、順序或數量不一樣的一類函數,同一函數名的函數能完成不一樣功能。函數

//非函數重載,只是返回值不同
void Fun(int i);
int  Fun(int i);

//非函數重載,不在同一名字空間
namespace A
{
    int Add(int i, int j); 
};
namespace B
{
    float Add(float i, float j); 
};

//函數重載
int Add(int i, int j); 
float Add(float i, float j); 

重命名機制:函數重載的名稱都是如出一轍的,C++編譯器就是經過重命名機制來區別這些同名函數的(不一樣的C++編譯器,重命名機制可能不同)。spa

//重命名機制
void Fun(int i, double j);  //c++編譯器把函數名Fun其實重命名爲_Fun_int_double
void Fun(double i, int j);  //c++編譯器把函數名Fun其實重命名爲_Fun_double_int

C++調用C 函數:C++提供了一個C 鏈接交換指定符號extern「C」來解決這個問題。code

  void Fun(int i, ini j); C 編譯器編譯後的名字爲_Fun。blog

  void Fun(int i, int j); C++編譯器編譯後的名字爲_Fun_int_int。編譯器

  C 編譯器和C++編譯器產生的名字不一樣,因此C++不能直接調用C 函數。用extern「C」解決。it

extern "C"
{
    //頭文件
    #include 「header.h」  
    //函數
    void Fun(int i, int j);
}
2 操做符重載

操做符重載:指用關鍵字operator加運算符表示的函數。能夠把其理解爲特殊形式的函數,運算符自己是函數名。編譯

int Add(int i, int j);       //普通函數
int operator+(int i, int j); //+運算符函數
//用法
int k = Add(10, 20);
int m = 10 + 20;

 操做符重載規則:class

 

 ps:後面講到類時再結合例子講解下操做符重載爲成員函數。基礎

相關文章
相關標籤/搜索