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; 
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值