C++函数重载

一、函数重载的基本概念

1、什么是函数重载

允许函数名相同,这种现象叫函数重载

2、函数重载的好处

方便的使用名字

3、函数重载的条件

参数的个数不同

参数的顺序不同

参数的类型不同

二、函数重载的注意事项

1、严格的类型匹配

如果类型不匹配,那么尝试转换,转换成功就掉用,失败就报错

2、函数重载和函数的默认参数一起使用,可能出现二义性问题

void myfunc(int a, int b = 0)
{
    cout << "myfunc(int a, int b = 0)" << endl;
}

void myfunc(int a)
{
    cout << "myfunc(int a)" << endl;
}
myfunc(10); 调用函数时就会报错,出现二义性问题,不知道调用哪个函数

3、函数的返回值不作为函数重载的条件

首先我们调用函数时是不需要写返回值的,并且编译器是通过你调用函数时,传入的参数来判断调用重载的哪个函数,所以返回值不能成为函数重载的条件

三、函数重载的原理

C++的函数在汇编时,会给函数取别名,C语言的不会,这也是C语言为什么不能重载的原因

四、C++如何调用C语言函数

1、不能直接调用的原因

C++的函数在汇编时,会给函数取别名,C语言的不会,这时,如果C++来调用C语言的函数,C++会去找取了别名的函数,但是C语言没有取别名,这是就会找不到,程序就会出错

2、如何正确的调用--extern “C”

在XXX.h文件中

//这是告诉C++编译器,找下面的函数,要以C语言的方式去寻找
#ifdef __cplusplus
extern "C"
{
#endif
    void func();//在这里面写想要调用的C语言的函数声明
#ifdef __cplusplus
}
#endif

实际上大多数C语言和C++共有的函数,转到定义处,我们都会看到这种代码
然后再将C语言的实现文件XXX.c文件导入到项目中,此时就可以正常的调用到C语言中的函数了

你可能感兴趣的:(C++,c++,开发语言)