C++进阶:重载原理分析

1. 认识重载

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

C++编译器通过函数名和其参数类型识别重载函数

我们通过 nm ./overload 查看编译情况

int add(int a,int b){
   
        return a+b;
}

float add(float a,float b){
   
        return a+b;
}

int main(){
   
        int n = add(1,2);
}

结果为:

[root@foundation1 C++7.3]# g++ overload.cpp -o overload
[root@foundation1 C++7.3]# nm ./overload
00000000004004a5 t .annobin__dl_relocate_static_pie.end
00000000004004a0 t .annobin__dl_relocate_static_pie.start
00000000004005b0 t .annobin_elf_init.c
0000000000400625 t .annobin_elf_init.c_end
0000000000400470 t .annobin_elf_init.c_end.exit
0000000000400470 t .annobin_elf_init.c_end.hot
0000000000400470 t .annobin_elf_init.c_end.startup
0000000000400470 t .annobin_elf_init.c_end.unlikely
0000000000400470 t .annobin_elf_init.c.exit
0000000000400470 t .annobin_elf_init.c.hot
0000000000400470 t .annobin_elf_init.c.startup
0000000000400470 t .annobin_elf_init.c.unlikely
000000000040049f t .annobin_init.c
000000000040049f t .annobin_init.c_end
0000000000400470 t .annobin_init.c_end.exit
0000000000400470 t .annobin_init.c_end.hot
0000000000400470 t .annobin_init.c_end.startup
0000000000400470 t .annobin_init.c_end.unlikely
0000000000400470 t .annobin_init.c.exit
0000000000400470 t .annobin_init.c.hot
0000000000400470 t .annobin_init.c.startup
0000000000400470 t .annobin_init.c.unlikely
0000000000400625 t .annobin___libc_csu_fini.end
0000000000400615 t 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值