函数重载 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
相关推荐
Austindatabases2 分钟前
数据不准确,数据丢失,SQLite怎么保证计算不丢数--SQLite 五脏俱全系列 (5)
java·开发语言·数据库·sqlite
滑稽之神眷顾者3 分钟前
基于正倒排索引的文档搜索引擎测试报告
java·开发语言·功能测试
jiayong235 分钟前
Python面试题集 - 数据结构与算法
开发语言·python
cui_ruicheng8 分钟前
Linux线程(四):线程池、日志系统与单例模式
linux·开发语言·单例模式
文祐15 分钟前
三维数组在内存中的分布
开发语言·内存
洛水水16 分钟前
【力扣100题】28. 翻转二叉树
算法·leetcode
kaikaile199518 分钟前
基于 MATLAB 的3D 蒙特卡洛光子传输模拟
开发语言·matlab·3d
雪度娃娃20 分钟前
结构型设计模式——外观模式
c++·设计模式·外观模式
我是唐青枫23 分钟前
C#.NET YARP 认证授权实战:在网关层统一接入 JWT
开发语言·c#·.net
故事和你9125 分钟前
洛谷-【数据结构2-2】线段树2
开发语言·数据结构·算法·动态规划·图论