利用函数重载编写函数max_「C++札记」函数重载

概述

函数重载指在相同作用域中多个函数名相同,函数的形参不同。

遵循规则:

1.函数名相同

2.函数的参数,类型,个数或顺序不一样都可以构成重载。

3.函数返回值得类型不同不构成重载,编译直接报错,存在二义性(ambiiguous)

#include using namespace std;void foo(int a){ cout << "foo(int a)" << endl;}void foo(int a, int b){ cout << "foo(int a, int b)" << endl;}void foo(double a, int b){ cout << "foo(double a, int b)" << endl;}int main(){ int a = 1; int b = 2; int c = 6.8; foo(a); foo(a, b); foo(c, b); return 0;}

运行结果:

8b2a47d45b7efbbbb865429dda0c310e.png

​实现原理

C++的重载使用了name mangling技术,有人翻译成命名粉碎,命名倾轧等。编译器会把原有的名字与其参数结合生成一个新的名字。

验证:

把上文源码文件编译成目标namemangling.o,使用nm指令查看该文件:

3e87ae29e113121031fb18e0674c4ade.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值