C++函数重载的一个小坑点

C++函数重载中,返回值类型不参与重载判断,仅依靠参数列表区分。即便误依赖返回值类型调用未定义的重载函数,链接器也无法捕获错误。
摘要由CSDN通过智能技术生成

为了实现函数重载,C++编译器一般会采用名字改编的方式为每个重载的函数生成一个独一无二的名字,这样在链接的时候就能找到正确的重载版本,例如:

int test(bool x)
{
    return 1;
}

int test(int x)
{
    return 100;
}


int main(void)
{
    return 0;
}



查看重载后的函数名称:

方法1:利用nm和c++filt

root@ubuntu:/home/qpz# nm test.o
0000001d T main
00000000 T _Z4testb
00000013 T _Z4testi
root@ubuntu:/home/qpz# c++filt   _Z4testb   _Z4testi
test(bool)
test(int)

方法二:利用objdump

080483ed <_Z4testb>:
 80483ed:       55                      push   %ebp
 80483ee:       89 e5                   mov    %esp,%ebp
 80483f0:       83 ec 04                sub    $0x4,%esp
 80483f3:       8b 45 08                mov    0x8(%ebp),%eax
 80483f6:       88 45 fc    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值