wllama实战:基于WebAssembly在浏览器本地运行大模型
2026/4/28 2:27:42
注:函数的“返回值不同”不作为函数重载的条件。
下面针对函数重载的条件编写代码:
#include<iostream> using namespace std; void func(){} //无参 void func(int a, int b){} //参数个数不同 void func(int a, double b){} //参数类型不同 void func(int a, int b, int c){} //参数个数不同 类型不同 void func(double a, int b){} //参数顺序不同 void func(double a){} //参数个数不同 int main(){ return 0; }上述函数均为func()的函数重载。
那编译器如何对这些重载函数作区分呢,可以参考下面的表格:
| 重载函数 | 教学示例 | GCC编译器改编的符号 |
| void func(){} | func | _Z4funcv |
| void func(int a, int b){} | funcintint | _Z4funcii |
| void func(int a, double b){} | funcintdouble | _Z4funcid |
| void func(int a, int b, int c){} | funcintintint | _Z4funciii |
| void func(double a, int b){} | funcdoubleint | _Z4funcdi |
| void func(double a){} | funcdoubleint | _Z4funcd |
【1】引用作为重载条件
#include<iostream> using namespace std; void func(int &a){ cout << "调用int &a" << endl; } void func(const int &a){ cout << "调用const int &a" << endl; } int main(){ int a = 10; func(a); //调用int &a func(10); //调用const int &a return 0; }上面代码的运行结果很好理解,a在主函数中作为左值,只能传入左值引用,而10作为常量(右值),只能传入右值引用(或万能引用)。
【2】函数重载遇到默认参数可能会产生歧义
#include<iostream> using namespace std; void func(int a, int b = 10){ cout << "调用int a, int b = 10" << endl; } void func(int a){ cout << "调用int a" << endl; } int main(){ func(10);//报错,因为不知道该调用哪一个重载函数,产生歧义 }