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

C++ - 函数重载

概念

函数重载允许在同一作用域内定义多个同名函数,但这些函数的参数要满足:参数类型、参数个数,参数顺序不同(满足三个中的一个),才能使用函数重载

#include <iostream>
using namespace std;// 1. 参数个数不同
void print(int a) {cout << "一个整数参数: " << a << endl;
}void print(int a, int b) {cout << "两个整数参数: " << a << " 和 " << b << endl;
}// 2. 参数类型不同
void print(double a) {cout << "一个双精度参数: " << a << endl;
}// 3. 参数顺序不同
void print(int a, double b) {cout << "[int, double] 顺序: " << a << ", " << b << endl;
}void print(double a, int b) {cout << "[double, int] 顺序: " << a << ", " << b << endl;
}int main() {print(5);           // 调用一个整数参数的版本print(10, 20);      // 调用两个整数参数的版本print(3.14);        // 调用双精度参数的版本print(5, 3.14);     // 调用[int, double]顺序的版本print(3.14, 5);     // 调用[double, int]顺序的版本return 0;
}

编译器如何区分同名函数

编译器通过函数名和参数列表生成唯一的内部标识符(称为“名字修饰”),因此参数列表不同的同名函数会被视为不同的函数

在使用时编译器会根据传递的函数参数的类型、个数、参数顺序来判断将参数传递给那个函数

函数重载与全缺省之间的歧义

当两个函数一个是无参和一个定义一个缺省值的函数,这两个函数是满足函数重载的条件的,但在调用时这两个函数会产生歧义,编译器不知道调用那个函数从而发生报错

相关文章:

  • 深入解析多线程与多进程:从理论到Python实践
  • C语言—指针3
  • 若依定制pdf生成实战
  • gradle3.5的安装以及配置环境变量
  • PX4开始之旅(二)通过自定义 MAVLink 消息与 QGroundControl (QGC) 通信
  • 力扣题解:21.合并两个有序链表(C语言)
  • 2025数维杯数学建模C题完整分析参考论文(共36页)(含模型、可运行代码、数据)
  • 赛季7靶场 - Environment
  • Android 移动应用开发:页面跳转与数据传递功能
  • Android屏蔽通话功能和短信功能
  • MySQL(4)如何查看MySQL数据库的版本?
  • 『不废话』之Python 3.14 Beta版新特性
  • 【传感器】代码——DHT11温湿度传感器
  • 从0开始学linux韦东山教程第一三章问题小结(1)
  • 4.2java包装类
  • STM32--PWM--函数
  • 微软系统 红帽系统 网络故障排查:ping、traceroute、netstat
  • 40-算法打卡-二叉树-深度优先(前、中、后序遍历)-递归遍历-第四十天
  • 蓝绿激光对潜通信介绍
  • 《微机原理》微机程序段 计算机编程数据分区
  • 名帅大挪移提前开启,意属皇马的阿隆索会是齐达内第二吗
  • 比特币价格重返10万美元,哪些因素使然?
  • 央行:当前我国债券市场定价效率、机构债券投资交易和风险管理能力仍有待提升
  • 稳住外贸基本盘,这个中部大省出手了
  • 陕西永寿4岁女童被蜜蜂蜇伤致死,当地镇政府介入处理
  • 迪拜金融市场CEO:2024年市场表现出色,超八成新投资者来自海外