在下面几种情况下不能视为重载:

1、返回值不同的函数不能视为重载

2、返回值是否为静态不能视为重载

3、数组和指针

int fun(int *ptr);
int fun(int ptr[]); // redeclaration of fun(int *ptr)
4、函数和函数指针
void h(int ());
void h(int (*)()); // redeclaration of h(int())
5、参数是否为const不能区分(但是对于类成员函数是可以的)
注意:const修饰指针形参或者引用形参的时候可以作为重载的标识,可以这么理解,由于指针或者引用作为形参的时候可以修改实参本身,
const修饰的时候是指指向的内容不能修改,所以能够作为区分重载的标识

http://www.geeksforgeeks.org/function-overloading-in-c/