本文从语法角度来探讨C++函数重载
一般性的来讲函数的重载就是 参数列表(类型,顺序, 个数) 决定。即参数列表不同但是名称相同的函数可视为不同的函数,返回值的区别不能作为重载的要素。那么为什么还要针对C++来具体探讨呢,以为C++里面有意个特殊的关键字——const .
在C++中const可能会成为函数重载的一个依据(我就因为忽视这一点而被一个问题坑得够苦的!)。
请看下面的代码:
class A{
int f();
int f();
};
class B{
int f() const;
int f();
}
显然class A的定义是通不过的,但是class B的定义却能够通过。这就是说 int fun();和int fun() const;是不同的函数。
再看一个例子:
class A{
int f(int * const p);
int f(int * p);
};
class B{
int f(const int * p);
int f(int * p);
};
上面class A的定义同样通不过,class B的定义能够通过。