函数重载 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
相关推荐
fpcc13 小时前
跟我学C++中级篇—std::conjunction手动实现
c++
项目題供诗14 小时前
C语言基础(三)
c语言·c++
亓才孓14 小时前
[认识异常和错误]java
java·开发语言
码农水水14 小时前
中国电网Java面试被问:流批一体架构的实现和状态管理
java·c语言·开发语言·面试·职场和发展·架构·kafka
1***438014 小时前
C++跨平台开发的核心挑战线程管理等基础功能
开发语言·c++
做萤石二次开发的哈哈14 小时前
萤石开放平台 萤石可编程设备 | 设备脚本自定义开发
开发语言·python·萤石云·萤石·萤石开放平台
a31582380614 小时前
大语言模型应用开发技术要求
算法·大语言模型·应用开发
倦王14 小时前
力扣日刷26112
算法·leetcode·职场和发展
无风听海14 小时前
深入讲解 C# 中 string 如何支持 CultureInfo
开发语言·c#
yaoxin52112314 小时前
291. Java Stream API - 从正则表达式创建 Stream
java·开发语言