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()的时候,会有歧义。

猜你喜欢

转载自blog.csdn.net/l101606022/article/details/79863960