C++基础 ---- 函数重载

函数重载

对于函数重载,关键在于编译器能够明确确认,对于重载函数的各种参数情况下的调用,都能够确定是要调用同名函数中的哪一个,不会产生二义性。

  1. 对于重载函数,应该在形参类型和形参数目上有所不同。
    第一点为是一种概括的说法,当涉及到下面几点时有时会犯糊涂。

  2. 不允许两个函数除了返回类型不同,其他要素都相同。
    比如 int fun() 和 float fun()

  3. 顶层const不影响传入函数的对象,所以仅仅是顶层const不同,不能函数重载

    比如:  void f(const int i) 和 void f(int i), 对于 int i = 100 或者 const int i = 100
    调用 f(i) 都是有二义性的,所以是不能重载的。  
  4. 底层const影响传入函数的对象,所以能够函数重载。
    比如:

      void f(const int* p) 和 void f(int* p) 是函数重载
      void f(const int& p) 和 void f(int& p) 是函数重载
      void A::f(int i) 和 void A::f(int i) const 是函数重载(const 修饰this 参数,是底层const
  5. 注意一下几个容易犯错的地方
    5.1

    假设定义了 int f() 和 int f(int a= 0)
    那么在 某处调用 f()的时候,会有歧义。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值