函数重载 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
相关推荐
feifeigo12314 小时前
基于布谷鸟算法的配电网分布式电源选址定容 MATLAB 实现
开发语言·算法·matlab
Mike117.14 小时前
GBase 8a 宽表查询里的压缩和行存列取舍
java·开发语言·数据库
辰尘_星启14 小时前
【ROS2】 Python 节点的开发流程
开发语言·python·机器人·系统·控制·ros2
计算机安禾14 小时前
【c++面向对象编程】第12篇:继承(二):构造与析构顺序,继承中的构造函数
开发语言·c++
知识分享小能手14 小时前
R语言入门学习教程,从入门到精通,R语言获取数据 (7)
开发语言·学习·r语言
原来是猿14 小时前
网络计算器:理解序列化与反序列化(下)
linux·开发语言·网络·网络协议·json·php
_waylau14 小时前
“Java+AI全栈工程师”问答02:Spring Boot 自动配置原理
java·开发语言·spring boot·后端·spring
JAVA面经实录91714 小时前
Java架构师最终完整版学习路线图
java·开发语言·学习
MicroTech202514 小时前
微算法科技(NASDAQ: MLGO)噪声图像的量子图像边缘提取算法:技术革新与产业赋能
科技·算法·量子计算
雪度娃娃15 小时前
结构型设计模式——享元模式
c++·设计模式·享元模式