函數重載

1.函數重載概念ios

函數重載(Function Overload)函數

用同一個函數名定義不一樣的函數spa

當函數名和不一樣的參數搭配時函數的含義不一樣3d

2 .函數重載的判斷標準 code

函數重載至少知足下面的一個條件: orm

參數個數不一樣 blog

參數類型不一樣 ci

參數順序不一樣 編譯器

3 .函數返回值不是函數重載的判斷標準 io

4 .編譯器調用重載函數的準則 

    將全部同名函數做爲候選者 

    嘗試尋找可行的候選函數  

    精確匹配實參 

    經過默認參數可以匹配實參 

    經過默認類型轉換匹配實參 

    匹配失敗 

    最終尋找到的可行候選函數不惟一,則出現二義性,編譯失敗。 

    沒法匹配全部候選者,函數未定義,編譯失敗。

函數重載的注意事項

重載函數在本質上是相互獨立的不一樣函數(靜態鏈編)

重載函數的函數類型是不一樣的

函數返回值不能做爲函數重載的依據

函數重載是由函數名和參數列表決定的。

#include <iostream>
using namespace std;

void myPrint(int a)
{
    cout<<"a="<<a<<endl;
}

void myPrint(const char *p)
{
    //cout<<"p="<<p<<endl;
    printf("%s \n",p);
}

void myPrint(int a,int b)
{
    cout<<"a="<<a<<endl;
    cout<<"b="<<b<<endl;
}

/*
//返回值 不是 判斷函數重載的標準
int myPrint(int a,int b)
{
    cout<<"a="<<a<<endl;
    cout<<"b="<<b<<endl;
}
*/

//1 當函數名和不一樣的參數搭配時函數的含義不一樣
//2 函數重載的判斷標準
//參數個數不一樣
//參數類型不一樣 
//參數順序不一樣

//3 返回值 不是 判斷函數重載的標準

//4 重載函數的調用標準

int main(void)
{
    myPrint(1);
    myPrint("11122222333aaa");
    myPrint(1,2);
    
    return 0;
}

函數默認參數 和 函數重載 在一塊兒  可能會產生二義性

k//函數默認參數 和 函數重載 在一塊兒
void myfunc(int a,int b,int c=0)
{
    cout<<"a:"<<a<<"b:"<<b<<"c:"<<c<<endl;
}

void myfunc(int a,int b)
{
    cout<<"a:"<<a<<"b:"<<b<<endl;
}

void myfunc(int a)
{
    cout<<"a:"<<a<<endl;
}

int main(void)
{
    //myfunc(1,2); //函數調用時 會產生二義性
    myfunc(1);
    return 0;
}

 

 

相關文章
相關標籤/搜索