内联函数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;
}