当前位置: 首页 > article >正文

C++ 函数重载

C++ 中的函数重载是一种重要的特性,它允许在同一个作用域内定义多个同名但参数列表不同的函数。

函数重载的主要目的是为了让程序能够更自然、更灵活地处理不同类型或数量的参数。

比如说下面这段代码,在C里面就不可以,但是在C++里面确可以

int print(int a)
{
    printf("呵呵\n");
    return a;
}

double print(double a)
{
    printf("hehe\n");
    return a;
}
int main(void) {
    int a = 3;
    double b = 4;
    print(a);
    print(b);
    return 0;
}

但是产生这样的原因是什么呢?

是因为代码在编译的时候(汇编语言)C语言选择的是函数名,而C++选择的函数名+形参类型

这就是C++的函数名修饰规则!

那么函数重载和什么有关呢?

和形参类型和类型顺序以及参数个数

和形参名字没有关系

和返回值没有关系

那么再思考一下,如果C++的汇编把返回值加入到修饰规则

那么函数重载和返回值有关系吗?

答案依然是没有关系啊,因为.c的文件是只要在链接才执行,这个时候你只能通过函数地址,找到在.h文件的函数声明,这无法判断返回值!

但是思考一下
有些地方虽然函数可以重载,但是程序运行时会出现歧义,这是我们需要注意的


http://www.kler.cn/news/340488.html

相关文章:

  • 手动更换SSL证书教程及注意事项
  • 【论文阅读】AUTOREGRESSIVE ACTION SEQUENCE LEARNING FOR ROBOTIC MANIPULATION
  • 接着上一篇stp 实验继续
  • Http 协议和 RPC 协议有什么区别?
  • OpenAI .NET 库稳定版发布,支持 GPT-4o 并改进 API 功能
  • 逼近理论及应用精解【9】
  • 【优选算法】(第三十篇)
  • 详解JavaScript作为命名空间的函数
  • 腾讯云SDK项目管理
  • 图像数据增强库综述:10个强大图像增强工具对比与分析
  • Facebook 正式推出了一项专为 Z 世代设计的全新改版
  • webGL进阶(一)多重纹理效果
  • windows C++-避免死锁(上)
  • [JAVA]连接数据库 并在Java中实现查询员工信息功能
  • makefile的基本练习
  • AI+视频监控:EasyCVR安防平台赋能火电制造行业的视频智能管理方案
  • 统计学基础知识-我国行政架构!
  • ViT(Vision Transformer详解)
  • 李宏毅深度学习-图神经网络GNN
  • 扩展欧几里得算法 C++