In C++, following function declarations cannot be overloaded.
1) Function declarations that differ only in the return type.
函数声明仅返回值类型不同
2) Member function declarations with the same name and the name parameter-type-list cannot be overloaded if any of them is a static member function declaration.
3) Parameter declarations that differ only in a pointer * versus an array [] are equivalent.
4) Parameter declarations that differ only in that one is a function type and the other is a pointer to the same function type are equivalent.
5) Parameter declarations that differ only in the presence or absence of const and/or volatile are equivalent.
6) Two parameter declarations that differ only in their default arguments are equivalent.