《C++函数重载必备知识》

目录

1.using namespace 是否是将命名空间转为全局? 

2.问:返回值不同构成函数重载吗?

3.函数重载顺序不同某种情况

首先,正常的函数重载顺序不同(代码与结果展示)

穿插:隐式类型转换

函数调用歧义

案例1

案例2


1.using namespace 是否是将命名空间转为全局? 

首先了解到函数重载的规则是形式参数的个数不同、类型不同、顺序不同
解释:不同命名空间下出现 函数名相同参数类型相同,若 参数名称不同且using 两个命名空间
此时, 两者当中的函数依旧在原作用域下不是在全局所以不构成函数重载的规则两者作用域是分开的,
但是如果进行调用则会构成函数的 调用歧义, 编译器不知调那一个, 若不调用则依旧是不会报错的,因为其仍然是不同作用域下的两个相同的函数.
编译器默认的查找规则是局部查找->全局查找
此时using namespace 的含义是使编译器的查找规则增加:局部查找->全局查找->using 的命名空间查找

2.问:返回值不同构成函数重载吗?

有两个函数名相同,参数相同,但返回值不同,一个是int,另一个是void。
例如:int fun(){return 0;} 和void fun(){}
调用时是fun();
所以返回值不同,无法区分,返回值不是重载的条件

3.函数重载顺序不同某种情况

首先,正常的函数重载顺序不同(代码与结果展示)

穿插:隐式类型转换

函数调用歧义

根据上一案例的表现,这一案例则出现了错误,
依旧是 满足函数重载的规则但是调用时会出现调用歧义

案例1

函数调用编译器不知道调哪个.

案例2

依旧是调用歧义,此时函数依旧满足函数重载的规则,只是调用出现了歧义。
  • 7
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值