C++ 函数重载通过名称和类型解析来实现:编译器根据名称搜索所有同名函数;对每个函数的签名进行解析,匹配参数类型;选择与实际参数匹配最具体的函数。
函数重载是一种允许同一函数名称与不同参数列表一起使用的 C++ 特性。它通过函数签名来区分不同的重载函数,函数签名由函数名称和参数类型组成。
C++ 函数重载通过名称解析和类型解析来实现。当编译器遇到一个函数调用时,它会执行以下步骤:
如果不止一个函数的签名与调用匹配,编译器将选择最具体匹配的函数,也就是具有与实际参数类型最相似的参数类型的函数。
以下代码演示了函数重载是如何工作的:
#include <iostream> using namespace std; void print(int n) { cout << "Integer: " << n << endl; } void print(float f) { cout << "Float: " << f << endl; } void print(string s) { cout << "String: " << s << endl; } int main() { print(10); // 调用 print(int) print(3.14); // 调用 print(float) print("Hello"); // 调用 print(string) return 0; }
在这个示例中,我们定义了三个重载函数 print()
:用于整数、浮点数和字符串。在 main()
函数中,我们调用 print()
函数并传递不同的参数类型,编译器会根据实际参数的类型选择最具体的函数。
输出:
Integer: 10 Float: 3.14 String: Hello