作者:jicanmeng
时间:2014年11月27日
在C++中,函数重载指的是多个同名的函数共同存在,但各个函数的参数个数或参数类型不同。
示例程序如下:
#include <iostream> int bigger(int a, int b) { std::cout << "bigger(int a, int b) called" << std::endl; return a >= b ? a : b; } char bigger(char a, char b) { std::cout << "bigger(char a, char b) called" << std::endl; return a>= b ? a : b; } void print(int a) { std::cout << "print(int a) called" << std::endl; } void print(int a, int b) { std::cout << "print(int a, int b) called" << std::endl; } int main() { int a = bigger(3,4); char b = bigger('x','z'); print(3); print(3,4); return 0; }
程序运行结果如下:
[jicanmeng@andy tmp]$ g++ functionOverload.cpp
[jicanmeng@andy tmp]$ ./a.out
bigger(int a, int b) called
bigger(char a, char b) called
print(int a) called
print(int a, int b) called
[jicanmeng@andy tmp]$
程序调用重载的函数时,会根据实参的类型自动寻找到对应的函数。
需要说明两点:
void fun(int a, int b); int fun(int a, int b);
就是错误的。当程序调用fun(3,4)函数时,编译器无法确定调用哪一个函数。
int func(int a, int b=0); int func(int a);
就是错误的。 和上面一样,当程序调用fun(5)函数时,编译器无法确定调用哪一个函数。