C++重载原理分析

函数重载:在相同作用域中的多个函数,具有相同的名字而形参类型或者形参个数不同。(返回值并不会影响函数重载)

C++函数重载底层实现原理是C++利用那么name mangling(倾轧)技术,来该函数名,区分参数表不同的函数名。

编译器通过函数名和参数类型识别重载函数,为了保证类型的安全连接,编译器用参数个数和参数类型对每一个函数标识符进行专门编码,这个过程被称为 “名字改编” 或“名字修饰”,类型安全的连接使得程序能够调用合适的重载函数并保证了参数传递的一致性,编译器能够检测到并报告连接错误

gcc 编译

int func(int n){};

只编译并生成.o文件

gcc -c test.c -o test.o

查看编号

objdump -t test.o
在这里插入图片描述

g++编译

int func(int a){} 
int func(float a, int b){}
float func(int a,double b){}

查看编号

objdump -t test.o

在这里插入图片描述

c++filt 名字改编转化成函数名
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值