新闻详情

新闻详情

首页 / 资讯中心 / 详情

C++初阶(长期更新)第4讲:类和对象(中)

发布时间:2026/10/1 21:38:25来源:尧图网络
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

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

千古前端图文教程:JavaScript 事件简介与事件驱动编程实战(事件源、事件、事件驱动程序详解) 2026/10/1 22:41:23

千古前端图文教程:JavaScript 事件简介与事件驱动编程实战(事件源、事件、事件驱动程序详解)

文档教程前端 【免费下载链接】Web 千古前端图文教程,超详细的前端入门到进阶知识库。从零开始学前端,做一名精致优雅的前端工程师。 项目地址: https://gitcode.com/gh_mirrors/we/Web 点击查看 免费下载 本教程来自「千古前端图文教程」仓…

阅读更多 →
芯片验证中的数学证明:从仿真抽检到形式化全量证明 2026/10/1 22:41:16

芯片验证中的数学证明:从仿真抽检到形式化全量证明

老实说,我在这个行业里干了快十年,见过太多验证团队在仿真上死磕,却很少有人把“数学证明”这四个字当回事儿。直到有一次,我被一个动辄上亿元流片成本的bug教育了一回——那是一个只在特定配置组合下才出现的死锁,仿真…

阅读更多 →
ADB安装全攻略:从环境变量到高频报错排查 2026/10/1 22:41:16

ADB安装全攻略:从环境变量到高频报错排查

玩安卓的人,早晚都会撞上“adb”这个词。不管是给小米电视删预装软件,用scrcpy把手机画面投到电脑上,还是抓App崩溃日志、批量装测试包,大家给你的第一个建议基本都是“先装个adb”。这句话听起来轻飘飘,实际动手时却能…

阅读更多 →
算力与电力协同:构建智算中心绿色调度体系的底层逻辑 2026/10/1 22:41:16

算力与电力协同:构建智算中心绿色调度体系的底层逻辑

去年底我去看一个新建的智算中心,设备已经陆续进场了,但让项目经理发愁的居然不是服务器,而是电。整栋楼的配电容量批下来只有需求的六成,上架计划只能分三期走,一期上完,剩下的设备全在库房里干等着。这不…

阅读更多 →
Unity模型实时切割实战:从MGR-BladeMode拆解Mesh顶点操作与物理碰撞 2026/10/1 22:41:16

Unity模型实时切割实战:从MGR-BladeMode拆解Mesh顶点操作与物理碰撞

简介:这份Unity切割模型案例面向游戏引擎初学者与希望掌握模型切割技术的开发者,围绕“只能切开自带基础模型”的设定,演示如何通过碰撞检测与网格数据修改实现实时切割效果。案例重点讲解鼠标左键蓄力、右键触发的交互设计,涉及I…

阅读更多 →
openclaw接入QQ/飞书全流程:配置、部署与避坑指南 2026/10/1 22:41:09

openclaw接入QQ/飞书全流程:配置、部署与避坑指南

openclaw接入QQ和飞书这事,我前后折腾了两天半,踩了不少坑,也把整个流程从一头雾水理顺到了能稳定跑通。说实话,这类Agent框架接入IM平台的教程网上大多写得又碎又旧,要么只讲一半要么版本对不上,很多细节是…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉