c++--运算符重载和函数重载

发布时间:2026/10/16 5:44:21

c++--运算符重载和函数重载 目录1. 函数重载1.1 定义1.2 特点1.3 函数重写Function Overriding2.运算符重载运算符重载的基本概念1. 函数重载1.1 定义函数重载允许在同一个作用域中定义多个同名函数它们的参数列表必须不同。参数列表的不同可以通过参数的数量、类型或者顺序来区分。1.2 特点同名重载的函数名称相同。参数列表不同可以通过不同的参数数量、类型或顺序来区分。函数重载要求参数列表必须有区别。这可以通过以下方式实现参数顺序不同如一个函数接受(int, double)另一个接受(double, int)。参数类型不同如一个函数接受整数另一个接受浮点数。参数数量不同如一个函数有两个参数另一个有三个参数。返回类型无关返回类型不能用于区分重载只有参数列表才起作用。#include iostream using namespace std; // 实现逻辑的辅助函数 void printValue(int value) { cout 打印整数: value endl; } void printValue(double value) { cout 打印双精度数: value endl; } // 函数重载 void print(int a) { printValue(a); // 调用实现相同的辅助函数 } void print(double b) { printValue(b); // 调用实现相同的辅助函数 } int main() { print(10); // 调用 print(int) print(3.14); // 调用 print(double) return 0; }1.3 函数重写Function Overriding定义在派生类中重新定义基类中已经存在的虚函数具有相同的名称和参数列表。特征1.基类中的函数必须是虚函数使用 virtual 关键字。2.重写的函数与基类中的函数具有相同的签名。具有相同的名称和参数列表3.实现多态性通过基类指针或引用调用时可以根据对象类型选择调用相应的函数。2.运算符重载C 允许重载大部分内置运算符使得用户可以定义自定义类型如类的行为。当我们重载运算符时可以使用更自然的方式来处理对象之间的运算。运算符重载的基本概念本质都是这是给你自己定义的Vector类型重载运算符。“告诉编译器遇到这个符号和我的类一起出现时应该调用哪个函数。运算符重载函数运算符重载是通过定义特定名称的函数来实现的。函数名由关键字operator和运算符符号组成。例如要重载加法运算符函数名为operator。返回类型和参数列表与普通函数一样重载的运算符函数需要定义返回类型和参数列表。访问控制运算符重载函数可以是成员函数或非成员函数。成员函数通常用于操作对象的自身属性而非成员函数用于处理两个不同对象之间的操作。#include iostream using namespace std; class Vector { private: float x, y; public: Vector(float x 0, float y 0) : x(x), y(y) {} // 重载加法运算符 Vector operator(const Vector other) const {other 是一个初始化为 Vector型引用 return Vector(this-x other.x, this-y other.y); } void display() const { cout Vector( x , y ) endl; } }; int main() { Vector v1(1.0, 2.0); Vector v2(3.0, 4.0); Vector v3 v1 v2; // 使用重载的 运算符 v3.display(); // 输出: Vector(4, 6) return 0; }1.第一个const参数修饰符const Vector other:这里的const表示传入的other参数是一个常量引用constant reference。这意味着在operator方法的实现中不能修改other的值。2.第二个const成员函数修饰符const在函数后面:这个const关键字修饰了operator方法本身表示这个成员函数不会修改调用它的对象的任何数据成员。这意味着在operator方法内部不能更改当前对象即this指向的对象的状态。
延伸阅读

更多相关文章

2026/10/6 16:16:13

Agent形态频变,Infra该为谁而建?一套不绑定框架的底座设计

最近在推进 Agent 类项目时,我发现最让人头疼的其实不是 Agent 本身怎么写,而是底层的 Infra 到底应该怎么搭。今天选一套自研 Agent 执行引擎,明天团队又想切更抽象的多 Agent 编排框架,后天产品又要求给每个 Agent 挂上记忆和工…

2026/10/6 16:16:15

MLPerf推理冠军GH200深度解析:架构优势与部署实践

MLPerf Inference v4.0的成绩单出来那几天,我所在的技术群里基本都在聊Grace Hopper Superchip。这个名字不好念,但成绩不难懂——同一套大语言模型推理负载下,GH200把上一代纯GPU方案甩开一大截,尤其在做离线批量推理和在线服务场…

2026/10/12 5:20:41

基于指数平滑的动态赋权方法在运力分配优化中的应用

1. 从一道国赛真题说起:运力分配与赋权的实战困境 如果你参加过数学建模国赛,尤其是C题这类偏向数据分析与优化的题目,大概率会遇到一个经典又棘手的问题:如何把有限的“运力”(比如车辆、人员、物资)合理地…

2026/10/16 5:41:32

弱监督语义分割新范式:端到端粗到细网络WCESN解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 5:41:32

pigz并行压缩:让gzip多线程加速,备份与日志处理效率倍增

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 5:41:32

告别收藏吃灰:学习资源筛选与高效使用指南

看到“全网最全学习资源合集”这种标题,我的第一反应不是点进去收藏,而是先判断它到底值不值得。做了这么多年内容整理和自学规划,我见过太多打着“最全”旗号的资源包,标题一个比一个响亮,打开以后发现要么是重复搬运…

2026/10/16 5:41:32

Solidity收款合约接入Chainlink预言机:实现美元计价ETH收款

最近有个做业务系统的朋友问我,想做一个接受加密货币付款的页面,合约应该怎么写。我说这事儿看着简单,真正动手你会发现,一个能在生产环境里用的收款合约,要操心的事情比想象中多得多:怎么接收以太币、怎么…

2026/10/16 5:41:32

PPO算法实战:手把手调出稳定月球着陆器

1. 项目概述:这不是教科书里的PPO,是亲手调出能稳稳落地的月球着陆器“浅谈PPO算法-玩转月球登陆”——光看标题,你可能以为这是某篇泛泛而谈的强化学习科普文。但实际操作过的人知道,这六个字背后,是一场从理论公式到…

2026/10/16 5:36:32

用 N_m3u8DL-RE 完整下载 DASH/HLS 流媒体

用 N_m3u8DL-RE 完整下载 DASH/HLS 流媒体 【免费下载链接】N_m3u8DL-RE Cross-Platform, modern and powerful stream downloader for MPD/M3U8/ISM. English/简体中文/繁體中文. 项目地址: https://gitcode.com/GitHub_Trending/nm3/N_m3u8DL-RE N_m3u8DL-RE 是一款 …

2026/10/16 5:33:43

Python调用Gemini Structured Outputs实现工单路由门禁

客服工单最怕的不是模型“答错一句话”,而是它给出一段看起来合理的说明,程序却从中猜错优先级。通俗做法是:要求模型只交 JSON(JavaScript Object Notation,轻量数据格式),再让代码验证它。Gem…

2026/10/16 4:03:48

Spring Boot超市进销存系统毕设实战:从需求拆解到答辩通关

最近带的一个学生项目组里,有A同学跑来问我:选什么毕设题目最稳妥,既能让评审老师觉得工作量够,又不会在答辩时被问到语无伦次。我第一反应就是推荐基于Spring Boot的超市仓库管理系统——也就是超市进销存系统。这个题目乍一看平…

2026/10/15 13:42:16

Flutter StatefulWidget 生命周期核心解析

很多刚开始接触 Flutter 的朋友,在看完一堆“Hello World”和基础组件之后,大概率都会撞上同一堵墙:StatefulWidget 里那堆 initState、build、dispose 方法,到底什么时候被调用?为什么顺序是那样?在里面到…

2026/10/16 0:01:11

Cephadm实战指南:Linux系统工程师的生产级Ceph集群部署与排障

简介:本资源是一份完整的Ceph分布式存储系统中文技术文档合集,面向Linux系统运维工程师、云平台架构师及存储方向开发者,帮助读者系统掌握Ceph集群的部署、配置与运维核心能力。文档覆盖对象存储(RGW)、块设备&#xf…

2026/10/16 0:01:11

ITK中SpatialObject几何体系解析:坐标系、变换与管道集成

1. 空间对象的定位:为什么 ITK 需要一套几何描述体系很多刚开始接触 ITK 的朋友,包括我自己,最初都是被它的图像滤波、配准、分割这些“正统”功能吸引进来的。等真正上手做点实际项目,比如把分割出来的器官边界做量化分析、给血管…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑