內聯函數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;
}