函数重载 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
相关推荐
keep_learning1113 小时前
Z-Image模型架构全解析
人工智能·算法·计算机视觉·大模型·多模态
黎雁·泠崖3 小时前
Java底层探秘入门:从源码到字节码!方法调用的中间形态全解析
java·开发语言
千里马-horse3 小时前
TypedArrayOf
开发语言·javascript·c++·node.js·napi
点云SLAM3 小时前
Boost中Graph模块中boost::edge_capacity和boost::edge_capacity_t
数据库·算法·edge·图论·最大团·最大流算法·boost库使用
we1less3 小时前
[audio] AudioTrack (六) 共享内存使用分析
java·开发语言
CYTElena3 小时前
关于JAVA异常的笔记
java·开发语言·笔记·语言基础
YIN_尹3 小时前
【C++11】lambda表达式(匿名函数)
java·c++·windows
陳10303 小时前
C++:vector(2)
开发语言·c++
代码游侠3 小时前
学习笔记——HTML网页开发基础
运维·服务器·开发语言·笔记·学习·html
代码游侠3 小时前
应用——基于C语言实现的简易Web服务器开发
运维·服务器·c语言·开发语言·笔记·测试工具