C++ 函数的重载
2026/4/28 1:06:25 网站建设 项目流程

1.函数重载概述

  • 作用:函数名可以相同,提高代码的复用性
  • 满足条件:
    • a.同一作用域(类)下
    • b.函数名称相同
    • c.函数参数类型/个数/顺序 不同

注:函数的“返回值不同”不作为函数重载的条件。

下面针对函数重载的条件编写代码:

#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

2.函数重载使用的注意事项

【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);//报错,因为不知道该调用哪一个重载函数,产生歧义 }

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询