当前位置: 首页 > 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;
}

编译器如何区分同名函数

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

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

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

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

http://www.xdnf.cn/news/356527.html

相关文章:

  • python中,什么是协程?
  • SQLite 转换为 MySQL 数据库
  • LlamaIndex 第六篇 SimpleDirectoryReader
  • vue数据可视化开发常用库
  • OpenCV播放摄像头视频
  • LeetCode 热题 100_编辑距离(94_72_中等_C++)(动态规划)
  • Rust 官方文档:人话版翻译指南
  • 高拟人化客服机器人显著提升用户接受度
  • zst-2001 历年真题 UML
  • 首版次软件测试的内容有哪些?首版次软件质量影响因素是什么?
  • IAR无法显示文件列表(即workspace)
  • RabbitMQ-高级特性1
  • WebRTC流媒体传输协议RTP点到点传输协议介绍,WebRTC为什么使用RTP协议传输音视频流?
  • 第十六节:图像形态学操作-顶帽与黑帽变换
  • java 多核,多线程,分布式 并发编程的现状 :从本身的jdk ,到 spring ,到其它第三方。
  • 【网络入侵检测】基于源码分析Suricata的IP分片重组
  • 深度学习基础--目标检测常见算法简介(R-CNN、Fast R-CNN、Faster R-CNN、Mask R-CNN、SSD、YOLO)
  • OpenCV计算机视觉实战(4)——计算机视觉核心技术全解析
  • Spring,SpringMVC,SpringBoot,SpringCloud的区别
  • Modbus RTU 详解 + FreeMODBUS移植(附项目源码)
  • 『Python学习笔记』ubuntu解决matplotlit中文乱码的问题!
  • Node.js数据抓取技术实战示例
  • 2025.05.08-得物春招算法岗-第三题
  • BLURRR剪辑软件免费版:创意剪辑,轻松上手,打造个性视频
  • 高效管理钉钉收款单数据集成到MySQL的技术方案
  • 用Python监控金价并实现自动提醒!附完整源码
  • TCP/IP协议的体系结构
  • Faiss 索引深度解析:从基础到实战
  • 驱动-互斥锁
  • 窗口函数row_number() OVER()对每个组内的行按照特定条件进行编号