函数重载 C++

在同一作用域中声明几个功能类似的同名函数,这些函数的形参列表不同(个数或类型)

cpp 复制代码
#include<iostream>
using namespace std;
// 1、参数类型不同
int Add(int left, int right)
{
 cout << "int Add(int left, int right)" << endl;
 return left + right;
}
double Add(double left, double right)
{
 cout << "double Add(double left, double right)" << endl;
 return left + right;
}
// 2、参数个数不同
void f()
{
 cout << "f()" << endl;
}
void f(int a)
{
 cout << "f(int a)" << endl;
}
// 3、参数类型顺序不同
void f(int a, char b)
{
 cout << "f(int a,char b)" << endl;
}
void f(char b, int a)
{
 cout << "f(char b, int a)" << endl;
}
int main()
{
 Add(10, 20);
 Add(10.1, 20.2);
 f();
 f(10);
 f(10, 'a');
 f('a', 10);
 return 0;
}
比

C++能够重载的原理:

名字修饰

C语言中没有名字修饰,而是在链接时直接用函数名取找地址,有同名函数时,区分不开。

C++中,在名字中引入参数类型等方法,区别了同名函数。

例如:在Linux环境下

cpp 复制代码
int Add(int left, int right);
//_Z3Addii 前面_Z是固定的,后面是函数名位数+函数名+参数类型
double Add(double left, double right)
//_Z3Adddd
相关推荐
-凌凌漆-几秒前
Qt QML应用层框架
开发语言·qt
少司府几秒前
C++进阶:map和set的使用
开发语言·数据结构·c++·容器·stl·set·map
江湖中的阿龙1 分钟前
23种设计模式
java·开发语言·设计模式
xiaoshuaishuai82 分钟前
C# Avaloniaui ListBox样式及用法
开发语言·c#
程序喵大人2 分钟前
C++ 程序员转型 AI Infra 学习路线
c++·人工智能·学习·ai infra
cpp_25014 分钟前
P11375 [GESP202412 六级] 树上游走
数据结构·c++·算法·题解·洛谷·树形结构·gesp六级
天才程序YUAN5 分钟前
Windows 11 C 盘扩容完整教程:恢复分区拦路、页面文件锁盘、WinRE 重建全记录
c语言·开发语言·windows
川冰ICE5 分钟前
JavaScript进阶③|Map_Set_WeakMap_WeakSet,新型数据结构
开发语言·javascript·数据结构
我是一颗柠檬7 分钟前
C语言最全面复习:从入门到精通(2026年)
c语言·开发语言
小雨下雨的雨7 分钟前
鸿蒙PC用Electron框架 实现 房产交易系统核心算法深度解析
前端·javascript·算法·华为·electron·鸿蒙系统