C++ | 详解函数重载

什么是函数重载?

  • 一组函数,其中函数名相同,参数列表的个数或类型不同,那么这一组函数就成为函数重载
  • 一组函数要称得上函数重载,一定是处在同一个作用域中
  • 函数名同,参数列表同,返回值不同,不叫重载,因为函数符号都相同
  • 函数重载是通过函数符号来判断的,如void func(int a);和void func(const int a);这两个函数名相同,参数都为int型,生成的函数符号伟func_int所以不算函数重载

C++在C的基础上支持函数重载,是因为C++中函数会在汇编时产生函数符号,一般由函数名+参数列表类型组成,如int sum(int a, int b);产生的函数富含是sum_int_int。而C语言在产生函数符号时只由函数名组成。

什么是多态?

多态分为两种多态,分别是静态多态、动态多态。

  • 静态(编译时期)多态:编译器在编译期间完成的,编译器根据函数实参的类型,可推断出要调用那个函数。(如函数重载、模板。)
  • 动态(运行时期)多态:在继承结构中,基类指针(引用)指向派生类的对象,通过该指针(引用)调用同名的覆盖函数(虚函数),基类指针(引用)指向哪个派生类对象,就会调用哪个派生类对象的同名覆盖方法。

C++调用C代码

一般C++无法直接调用C代码,因为C和C++的函数符号不同,可以通过extern "C"指明调用的是C代码,要生成C的函数符号,需要把函数的声明括在extern "C"中。
同样,C代码调用C++代码也会出现同样的问题,也需要C++中使用extern “C”,把C++源码扩在extern "C"中。

注意:extern “C” 只能在C++编译器中使用。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值