c++复习——名字粉碎

(一)函数重载

(1)函数的原型

函数返回值 函数名 形参列表(参数的类型 和个数 形参名可省略),且不需要函数体。

(2)函数重载条件

  • 同一作用域下;
  • 函数名相同;
  • 函数的参数个数不同、参数的类型不同,或者顺序不同;

注意:函数的返回值不能作为函数重载的条件;

(二)C为什么不能函数重载,C++却可以?

  • C语言区分函数是以函数名来区分(C编译器会在编译阶段将函数命名为_函数名),若是使用同名函数,就会发生重定义。
  • C++区分函数是以函数的原型来区分(C++编译器使用了名字粉碎技术)

(1)vs2019 C编译器编译

#include <iostream>
using namespace std;

//使用C编译器
//编译成_fun
extern "C" int Max(int a, int b)
{
	return a > b ? a : b;
}

int main()
{
	Max(10, 20);
	return 0;
}

(2)vs2019 C++编译器编译

(三)C++名字粉碎技术

(1) 返回类型不能作为函数重载的依据,
 

如果返回类型,函数名,参数类型都相同,但是参数个数不同也未必能够进行重载,如果没有缺   省值或者默认值的情况下可以重载,如果有默认值则不能确定。
 所以调用的时候无法确定哪个函数因此要注意二义性问题

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值