函数重载 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
相关推荐
阿i索几秒前
【蓝桥杯备赛Day3】——STL
开发语言·c++
17(无规则自律)4 分钟前
C++ 链表修炼指南
数据结构·c++·算法·leetcode·链表
KhalilRuan4 分钟前
基于OpenGL实现布料模拟
算法
大江东去浪淘尽千古风流人物5 分钟前
【claw】 OpenClaw 的架构设计探索
深度学习·算法·3d·机器人·slam
闻缺陷则喜何志丹6 分钟前
【字典树 回溯】P7210 [COCI 2020/2021 #3] Vlak|普及+
c++·算法·字典树·回溯·洛谷
二十雨辰6 分钟前
[Java]RuoYi帝可得-2文件储存
java·开发语言
wjm0410066 分钟前
ios学习路线 -- Swift基础(1)
开发语言·ios·swift
Vect__6 分钟前
深刻理解C++STL库常见容器功能和底层
开发语言·c++
夏玉林的学习之路6 分钟前
委托构造和using关键字
开发语言·c++·算法
small-pudding8 分钟前
深入理解PDF:蒙特卡洛光线追踪中的概率密度函数
算法·pdf·图形渲染