C++ 函数重载

c++函数重载

 同一作用域中 函数名相同 参数列表不同的函数构成重载关系。

 参数列表不同 : 类型不同 、个数不同、参数顺序不同

 调用函数时会根据传入的参数值的类型选择对函数。
#include <iostream>
using namespace std;

int getmax(int x,int y)
{
    cout << "getmax(int,int)" << endl;
    return  x>y?x:y;
}

int getmax(int x,double y)
{
      cout << "getmax(int,double)" << endl;
    return  x>y?x:y;
}
int main()
{
    getmax(1,2);
    getmax(1,2.5);
}

函数重载 在使用函数指针调用函数时会根据指针的类型选择对合适的函数。

#include <iostream>

using namespace std;

int getmax(int x,int y)
{
    cout << "getmax(int,int)" << endl;
    return  x>y?x:y;
}
double getmax(double x,int y)
{
    cout << "getmax(double,int)" << endl;
    return  x>y?x:y;
}
double getmax(int x,double y)
{
    cout << "getmax(int,double)" << endl;
    return  x>y?x:y;
}
double (*pgetmax)(double x,int y);

double (*pfun)(int x,double y);

int main()
{
    getmax(1,2);
    getmax(1,2.5);
    getmax(2.5,3);

    pgetmax = getmax;
    pgetmax(1.5,100);
    pfun = getmax;
    pfun(100,2.5);
}

函数重载的原理

 c++ 语言中生成调用函数名时 不但要考虑函数名 还要考虑参数列表。

 c  语言中生成调用函数名时 只考虑函数名。

c++函数重载引入的问题

 跨编译器调用问题

解决方式

extern "C" int getmax(int x,int y);

按照c语言的方式 来产生调用的函数名

callcfun.c

#include <stdio.h>
int getmax(int x,int y)
{
    printf("c fun getmax(int,int)\n");
    return x>y?x:y;
}

cfun.cpp

#include <iostream>
using namespace std;
extern "C" int  getmax(int x,int y);
int main()
{
    cout << getmax(1,100) << endl;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值