重载是一种编程语言特性,指在同一作用域中,通过改变函数参数数量、类型或顺序的方式,使得同名函数能够接受不同的调用方式,并产生不同的行为。重载可以提高代码的复用性和易读性。
在面向对象编程中,重载是通过函数的签名来实现的。函数签名是函数名和参数列表的组合,只要在同一作用域中,函数签名相同的函数就会被认为是同一个函数。
在实现重载时,函数名必须相同,但参数数量、类型或顺序必须不同。例如,下面三个函数就是重载函数:
void print(int num);void print(double num);
void print(int num1, int num2);
这三个函数的函数名都为print,但参数列表不同,实现了函数的重载。
重载函数的调用是根据实参的数量、类型和顺序来确定的。编译器根据这些实参信息,在重载函数集合中选择一个与之最匹配的函数。如果找不到匹配的函数,编译器将报错。
举个例子,下面的程序中有两个print函数,分别接受int和double类型的参数,调用时会根据参数类型来选择调用哪个函数:
void print(int num) { cout << "int: " << num << endl;
void print(double num) {
cout << "double: " << num << endl;
int main() {
print(10);
print(1.23);
return 0;
在这个程序中,第一次调用print函数时,传入的是int类型参数10,编译器会选择接受int类型参数的print函数进行调用。第二次调用print函数时,传入的是double类型参数1.23,编译器会选择接受double类型参数的print函数进行调用。
在使用重载时,需要注意以下事项: