尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
C++初阶(长期更新)第4讲:类和对象(中)
C初阶长期更新第4讲类和对象中跟着潼心走轻松拿捏C困惑通通走一去不回头~欢迎开始今天的学习内容你的支持就是博主最大的动力。博主主页潼心1412o-CSDN博客前言今天继续学习的类和对象gogogo出发喽~4.1 运算符重载1.当运算符被⽤于类类型的对象时C语⾔允许我们通过运算符重载的形式指定新的含义2.是具有特殊名字的函数他的名字是由operator和后⾯要定义的运算符共同构成3.重载运算符函数的参数个数和该运算符作⽤的运算对象数量⼀样多。⼀元运算符有⼀个参数⼆元运算符有两个参数⼆元运算符的左侧运算对象传给第⼀个参数右侧运算对象传给第⼆个参数。4.如果⼀个重载运算符函数是成员函数则它的第⼀个运算对象默认传给隐式的this指针因此运算 符重载作为成员函数时参数⽐运算对象少⼀个。#includeiostream using namespace std; class Date { public: Date(int year 1, int month 1, int day 1) { _year year; _month month; _day day; } //private: int _year; int _month; int _day; }; bool operator(const Date x1, const Date x2) { return x1._year x2._year x1._month x2._month x1._day x2._day; } int main() { Date d1; Date d2(d1); operator(d1, d2); d1 d2; return 0; }我们发现想使用类中的private成员有点麻烦解决方法为将operator函数放为类的成员函数但是这就涉及到参数个数的问题了因为有默认的this指针作为成员函数的第一个参数所以可以支配的参数数量就减少了一个// 重载为全局的⾯临对象访问私有成员变量的问题// 有⼏种⽅法可以解决// 1、成员放公有// 2、Date提供getxxx函数// 3、友元函数// 4、重载为成员函数#includeiostream using namespace std; class Date { public: Date(int year 1, int month 1, int day 1) { _year year; _month month; _day day; } bool operator(const Date d) { return _year d._year _month d._month _day d._day; } private: int _year; int _month; int _day; }; int main() { Date d1; Date d2(d1); d1.operator(d2); d1 d2; return 0; }5.不能通过连接语法中没有的符号来创建新的操作符⽐如operator。6. .* :: sizeof ?: .注意以上5个运算符不能重载。//.*是何物 class A { public: void func() { cout func() endl; } }; void f() { cout f() endl; } int main() { //函数指针 void (*func1)() f; (*func1)(); //成员函数指针 void (A:: * func2)() A::func; A aa; (aa.*func2)(); //注意这里定义时需要指定类域且地址需要取地址符 //调用时需要指定对象 return 0; }7.操作符⾄少有⼀个类类型参数不能通过运算符重载改变内置类型对象的含义如 intoperator(int x, int y)8.类需要重载哪些运算符是看哪些运算符重载后有意义4.2 日期类opertor的实现//Date.h class Date { public: Date(int year 1, int month 1, int day 1); Date operator(int day); int GetMonthDays(); void Print(); private: int _year; int _month; int _day; };//Date.cpp #includeiostream #includeDate.h using namespace std; Date::Date(int year, int month, int day) { _year year; _month month; _day day; } int Date::GetMonthDays() { static int a[13] { -1,31,28,31,30,31,30,31,31,30,31,30,31 }; if (_month 2 (_year % 4 0 _year % 100 ! 0) || (_year % 400 0)) { return 29; } else return a[_month]; } Date Date::operator(int day) { _day day; while (_day GetMonthDays()) { _day - GetMonthDays(); _month; if (_month 13) { _month 1; _year; } } return *this; } void Date::Print() { cout _year / _month / _day endl; } int main() { Date d1(2026, 9, 30); Date d2 d1 100; d1.Print(); d2.Print(); return 0; }好了今天的学习内容就到这里啦谢谢你的陪伴我是潼心下次再见~如果这篇文章对你有帮助的话。请务必给主播一个一键三连球球了这对主播很重要~博主主页潼心1412o-CSDN博客
RELATED

相关推荐

解决单点后端高并发问题技术:Nginx

解决单点后端高并发问题技术:Nginx

nginx是什么 Nginx(读作 “engine-x”)是一款开源、高性能的 Web 服务器和反向代理服务器。它由 Igor Sysoev 开发,2004 年发布,最早是为了解决高并发场景下的性能和稳定性问题。 除了 HTTP 服务,Nginx 也支持 IMAP/PO…

📅 2026/10/1 21:38:37
同一套算法,换个参数差 15%:我打算让智能体自己去找这组参数

同一套算法,换个参数差 15%:我打算让智能体自己去找这组参数

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

📅 2026/10/1 21:38:37
reinstall:VPS 一键重装系统脚本,256MB 内存也能在 Linux 与 Windows 间切换

reinstall:VPS 一键重装系统脚本,256MB 内存也能在 Linux 与 Windows 间切换

reinstall:VPS 一键重装系统脚本,256MB 内存也能在 Linux 与 Windows 间切换 【免费下载链接】reinstall 一键DD/重装脚本 (One-click reinstall OS on VPS) 项目地址: https://gitcode.com/GitHub_Trending/re/reinstall reinstall 是一个 VPS 一…

📅 2026/10/1 21:38:37
MORE NEWS

更多资讯

📰

Docker -- 构建nacos镜像

配置信息application.properties nacos配置参考文件spring.datasource.platformmysql db.num1 db.url.0jdbc:mysql://ruoyi-mysql:3306/ry-config?characterEncodingutf8&connectTimeout1000&socketTimeout3000&autoReconnecttrue&useUnicodetrue&useSSL…

📰

在线鲜花电商平台开发实战:SpringBoot+Vue+AI大模型全解析

做鲜花电商这个项目之前,我其实有点轻视它——市面上商城类的开源项目一抓一大把,换个商品类目而已,能玩出什么花?真正把需求理完、把代码写起来之后,我才发现自己错得离谱。鲜花的商品属性跟数码、服饰、图书完全是两…

📰

Redis安装配置与核心功能实战指南:跨平台避坑手册

我们直接进入正题。在本地环境搞定Redis安装和基本使用,看起来是特别简单的事,网上教程一抓一大把,但实际自己动手时,你会发现坑比想象中多得多。Windows下版本选择混乱、Linux下编译环境缺依赖、密码配置完居然不生效、可视化工具…

📰

OTFS信道估计:面向高速移动场景的延迟-多普勒域稀疏建模与LS实现

简介:本资源聚焦OTFS(正交时频空间)通信系统中的核心环节——信道估计,面向无线通信方向的研究生、科研人员及5G/6G算法工程师,解决高速移动场景下多普勒频移严重、时变信道建模难、估计精度低等实际问题。压缩包共69个…

📰

wifit3 RxReaderThread设计:专职读线程如何避免USB FIFO溢出(完整指南)

wifit3 RxReaderThread设计:专职读线程如何避免USB FIFO溢出(完整指南) 【免费下载链接】wifit3 Wifite but USB-only & cross-platform. 项目地址: https://gitcode.com/GitHub_Trending/wi/wifit3 wifit3 是一个跨平台的 USB Wi…

📰

LabVIEW监控系统架构设计与实践:从数据采集到打包部署

接到一套环境监控系统的需求时,我最头疼的往往不是设备本身,而是上位机软件怎么写。设备厂家的Demo程序一般只能看个实时数值,数据多了就卡,存个历史记录还得靠外部软件,换个型号的设备又得改代码。这几年用LabVIEW陆续…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬