C++ 函數重載

內聯函數inline

如果頻繁地使用一個函數,那就要不停地堆棧和壓棧,這時可以在函數聲明前加一個inline。這樣可以免去堆棧和壓棧的時間。

inline void printAB(int a,int b)
{
    cout << a << b << endl;
}

函數重載

函數名相同,形參列表不同,可以構成函數重載。

//比如下面第一個和第二個個函數可以構成函數重載  
int printA(int a)
{
    cout << "a=" << a << endl;
}

int printA(double b)
{
    cout << "b=" << b << endl;
}

//下面這個函數會與第一個函數有衝突,因爲返回值類型不同不可以構成重載
char printA(int a)
{
    cout << "a=" << a << endl;
}

函數重載和函數指針

int func(int a, int b)
{
  cout << "func" << endl;  
  return 0;
}

int func(int a,int b,int c)
{
    cout << "func(int,int,int)" <<endl;
    return 0;
}

//1.定義一種函數類型
typedef int(MY_FUNC)(int,int);

//2.定義一個只向這種函數類型的指針類型  
typedef int(*MY_FUNC_P)(int,int);

//3.直接定義一個函數指針

int main()
{
    //1.
    MY_FUNC *fp = NULL;  //通過這個類型去定義這個指針
    fp = func;
    fp(10,20);

    //2.
    MY_FUNC_P fp1 = NULL;
    fp1 = func;
    fp1(10,20);

    //3.
    int (*fp2)(int,int) = func;
    fp2(30,40);

    fp2 = func;  //fp2 ---> func(int,int)
    fp2(1,2);  //func(int,int)
    fp3(10,20,30);//出現錯誤,不能用指向func(int,int)函數的指針指向func(int,int,int)函數

    int(*fp4)(int,int,int)=NULL;
    fp4 = func;
    fp4(10,20,30); //ok


   return 0; 
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章