函数重载 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
相关推荐
C雨后彩虹2 小时前
亲子游戏问题
java·数据结构·算法·华为·面试
Alsn862 小时前
Qt5 朗读语音
开发语言·qt
南桥几晴秋2 小时前
QT常用控件--QWidget
开发语言·数据库·qt
ht巷子2 小时前
Qt:QPainter坐标系统和坐标转换
开发语言·c++·qt
HalvmånEver2 小时前
Linux:基于匿名管道创建出简易进程池(进程间通信五)
linux·运维·服务器·c++·进程池·管道pipe
郝学胜-神的一滴2 小时前
雕栏玉砌:Qt 自定义窗口之美——标题、圆角、阴影三艺精解
开发语言·c++·qt·程序人生
fie88892 小时前
基于蒙特卡洛方法的粒子滤波跟踪MATLAB实现
开发语言·matlab
fensnote2 小时前
QT使用QtXlsxWriter读取excel文件
开发语言·qt·excel
2501_941877982 小时前
从调用链到因果关系的互联网工程语法重构与多语言实践随笔分享
开发语言·python
vyuvyucd2 小时前
C++ SO库创建与调用全攻略
c++