【C++基础学习笔记】二、C++的函数重载

函数重载指C++中在同一片作用域中,可以声明几个函数名相同的函数。但是注意重载的函数名可以相同,其形参列表必须不同,不同可以体现在:参数个数、参数类型、参数顺序上;但是返回值不同不构成重载

以下为函数重载的示例:

namespace Xu{
    int Add(int x, int y){
        return x + y;
    }

    double Add(double x, double y){
        return x + y;
    }

    long Add(long x, long y){
        return x + y;
    }
}

int main() {
    int ret1 = Xu::Add(1,2);
    double ret2 = Xu::Add(1.0, 2.0);
    cout << ret1 << " " << ret2 << endl;
    return 0;
}

经典的重载概念的面试题:

问:为什么C++支持重载而C语言不支持重载呢?
答:因为C的编译器在链接时直接使用函数名(声明的地方的)去关联函数(实际定义的函数),函数名相同时就不知道链接到哪个函数上了。   而C++的编译器会使用修饰过的函数名来关联函数而不是像C语言中直接使用函数名;修饰的元素有形参的个数,类型,顺序等,这样就会使得一样名字的函数在被修饰后不一样,这样链接时就知道找哪一个了。

问:若可以改变编译器使得编译器也能过利用函数返回值不同来修饰函数名,这样可不可以也构成重载?
答:不可以。 因为若两个同名函数,形参列表相同,返回值不同,确实是可以修饰成不一样的;但是调用函数时又没有要写返回值,直接一个函数名和参数,无法知道调用的是哪个。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值