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

C++详细笔记(四)

1.类和对象

1.1拷贝构造函数(补充)

class Date{
public:int _year;int _month;int _day;
// 全缺省的构造函数Date(int year = 1900, int month = 1, int day = 1){_year = year;_month = month;_day = day;}
}
int main()
{Date d1(2024, 4, 14);Date d2(d1);Date d3 = d1;                 //拷贝构造Date d4(2024, 4, 15);         //赋值d1 = d4;return 0;
}

1.2运算符重载

运算符重载是 C++ 中的一项强大功能,它允许程序员重新定义已有的运算符,使其能够用于特定的类类型或自定义数据类型。

  1. 增强代码可读性

    • 通过运算符重载,可以使用熟悉的运算符来操作自定义类型的对象,使代码更加直观和易于理解。例如,对于一个表示复数的类,可以重载加法运算符+,使得两个复数的相加操作看起来就像对基本数据类型进行加法一样自然。
    • 对于自定义的容器类,可以重载下标运算符[],使得访问容器中的元素更加方便。
  2. 提高代码的可维护性

    • 当需要对自定义类型进行特定的操作时,使用运算符重载可以将这些操作封装在类的内部,而不是在类的外部使用一系列的函数调用。这样可以提高代码的封装性和可维护性。
    • 如果后续需要修改这些操作的实现,只需要在类的内部修改运算符重载函数即可,而不需要在整个代码中查找和修改相关的函数调用。
  3. 具有特殊函数名的函数。语法结构为:返回值类型 operator操作符()
  4. 不可以创造新的操作符。
  5. 必须要有一个类类型参数。
  6. 内置类型运算符,其含义不能改变。(编译器中不会将此报错,但是把加法硬要重载成减法怎么看也有点离谱)。
  7. .*  ::  sizeof  ?: . 五个操作符不能重载,其中.*运算符是帮助我们调用成员指针的。
/ 赋值运算符重载// d2 = d3 -> d2.operator=(&d2, d3)Date & operator=(const Date& d){
Date a;
this->_year = d._year;
this->_month = d._month;
this-> _day = d._day;
return *this;}
类外对输入输出流的重载
ostream& operator<<(ostream& output, Date& a)
{cout << a._year << "年" << a._month << "月" << a._day << "天" << endl;return output;
}
 ==运算符重载bool operator==(const Date& d)
{if (this->_year == d._year){if (this->_month == d._month){if (this->_day == d._day){return true;}else{return false;}}else{return false;}}else{return false;}
}//日期类举例

赋值运算符重载成全局函数,无this指针,需要两个参数。

函数指针与运算符重载各不相同,多个同一运算符重载可以构成函数重载。

一般成员函数重载为成员函数,输入流输出流最好重载为全局函数。

相关文章:

C++详细笔记(四)

1.类和对象 1.1拷贝构造函数&#xff08;补充&#xff09; class Date{ public:int _year;int _month;int _day; // 全缺省的构造函数Date(int year 1900, int month 1, int day 1){_year year;_month month;_day day;} } int main() {Date d1(2024, 4, 14);Date d2(d1…...

架构师备考-背诵精华(系统架构评估)

系统架构评估是在对架构分析、评估的基础上&#xff0c;对架构策略的选取进行决策。它利用数学或逻辑分析技术&#xff0c;针对系统的一致性、正确性、质量属性、规划结果等不同方面&#xff0c;提供描述性、预测性和指令性的分析结果。 重要概念 敏感点&#xff1a;敏感点是…...

QT 实现自定义水波进度条

1.界面实现效果 以下是具体的项目需要用到的效果展示。 2.简介 原理:随着进度的改变,在我们的绘制图像void paintEvent(QPaintEvent *) override;事件中绘制图形。 使用QPainter来绘制正弦波,通过定时器,不断的更新我们绘制的图形,动态改变正弦波的参数来创建动画效果…...

厨房老鼠数据集:掀起餐饮卫生监测的科技浪潮

厨房老鼠数据集&#xff1a;掀起餐饮卫生监测的科技浪潮 摘要&#xff1a;本文深入探讨了厨房老鼠数据集在餐饮行业卫生管理中的重要性及其相关技术应用。厨房老鼠数据集通过收集夜间厨房图像、老鼠标注信息以及环境数据&#xff0c;为深度学习模型提供了丰富的训练样本。基于…...

Linux系统:more命令

1、命令详解&#xff1a; more命令是Linux系统中的一个文本查看器&#xff0c;它可以一次显示一页内容&#xff0c;并提供了一些方便的浏览操作&#xff0c;比如向下滚动、向上滚动、搜索等。当需要查看大型文件或长文本时&#xff0c;通过分页显示可以很好地避免一次性将整个文…...

ESP32-S3学习笔记:分区表(Partition Table)的二进制分析

一、参考资料 用于研究的官方示例代码&#xff1a;esp-idf-v5.3\examples\storage\partition_api\partition_find参考的官方文档&#xff1a;ESP-IDF编程指南&#xff1a;分区表 二、准备工作 用VS Code打开示例代码&#xff0c;打开示例代码的CSV自定义分区表&#xff0c;如…...

04,perl

1 &#xff0c;作用 &#xff1a; 2 &#xff0c;原理 &#xff1a; 3 &#xff0c;使用场景 &#xff1a;...

Js 更加优雅地实现Form表单重置

文章目录 前言代码实现代码优化 前言 最近在做一个后台项目 不免大量使用表单 表单查询 编辑 还原 导入导出 不免要经常实现 记录下表单重置的一些方法 代码实现 <div class"Query"><el-form :model"ruleForm" ref"ruleFormref" labe…...

基于微信小程序的驾校预约系统设计与实现

文章目录 前言项目介绍技术介绍功能介绍核心代码数据库参考 系统效果图文章目录 前言 文章底部名片&#xff0c;获取项目的完整演示视频&#xff0c;免费解答技术疑问 项目介绍 当今社会已经步入了科学技术进步和经济社会快速发展的新时期&#xff0c;国际信息和学术交流也不…...

利用python进行数据处理,得到对自己有利的内容

一&#xff0c;介绍 在2025年的公务员录取信息发布后&#xff0c;许多考生和求职者可能会感到困惑&#xff0c;尤其是在面对庞大的职位列表时&#xff0c;如何快速找到适合自己的职位成为了一个亟待解决的问题。面对这样的问题&#xff0c;以下几点建议或许能够帮助大家更有效地…...

Java面试题五

一、谈谈你对Java内存模型&#xff08;JVM Memory Model&#xff09;的理解。 Java内存模型&#xff08;Java Memory Model&#xff0c;简称JMM&#xff09;是Java虚拟机&#xff08;JVM&#xff09;规范中定义的一种关于内存访问、共享变量在多线程之间的可见性、以及原子性、…...

2013 lost connection to MySQL server during query

1.问题 使用navicat连接doris&#xff0c;会有这个错误。 2.解决 换低版本的navicat比如navicat11。...

【英特尔IA-32架构软件开发者开发手册第3卷:系统编程指南】2001年版翻译,2-1

文件下载与邀请翻译者 学习英特尔开发手册&#xff0c;最好手里这个手册文件。原版是PDF文件。点击下方链接了解下载方法。 讲解下载英特尔开发手册的文章 翻译英特尔开发手册&#xff0c;会是一件耗时费力的工作。如果有愿意和我一起来做这件事的&#xff0c;那么&#xff…...

Android便携式WLAN热点分析

Android便携式WLAN热点分析 Platform: RK3368 OS: Android 6.0 Kernel: 3.10.0 文章目录 Android便携式WLAN热点分析分析Android开启WLAN热点的路由策略和防火墙便携式WLAN热点开启流程路由表路由策略iptables(防火墙) 用hostapd命令手动开启WLAN热点1.加载驱动2.配置wlan0 …...

从经济学原理看团队分工合作

最近我接触到一个经济学概念叫"比较优势"。学过经济学的同学应该很熟悉&#xff0c;但为了让不了解经济学的朋友们也能明白&#xff0c;我们先来解释下什么是比较优势&#xff0c;然后再谈谈为什么我认为这个原理应当被用在团队合作的分工当中。 比较优势是19世纪初…...

企业一级流程架构规划方法

在之前关于企业业务流程规划的系列文章中&#xff0c;我们已经分别对企业业务流程规划的价值和原则、企业的业务流程架构的应用、两种常见的企业总体业务流程架构模式等进行了比较深入的分析和阐述&#xff0c;相信大多数企业同仁&#xff0c;已经对企业的业务流程规划&#xf…...

用ESP32驱动stt7735 TFT屏幕

操作流程&#xff1a; 1 在esp32项目中搜索TFT库 2 找到对应TFT_eSPI库&#xff0c;添加进所在项目中&#xff08;这里可能下载很久&#xff09; 3 找到对应屏幕文件下的User_Setup.h 修改&#xff0c;将驱动换成ST7735_DRIVER&#xff0c;并修改对应屏幕引脚和屏幕尺寸&…...

Yolo目标检测:Yolo v1简介

一、Yolo系列介绍 YOLO&#xff08;You Only Look Once&#xff09;是一种基于深度学习的目标检测算法&#xff0c;由Joseph Redmon等人于2016年提出。它的核心思想是将目标检测问题转化为一个回归问题&#xff0c;通过一个神经网络直接预测目标的类别和位置。YOLO算法将输入图…...

Java動態轉發代理IP詳解

Java中實現動態轉發代理IP 在Java中實現動態轉發代理IP並不複雜&#xff0c;通常可以通過一些開源庫和框架來實現。下麵是一個簡單的實現思路&#xff1a; 設置HTTP請求&#xff1a;在Java中&#xff0c;可以使用HttpURLConnection或Apache HttpClient來發送HTTP請求。在發送…...

Android15之解决gdb:Remote register badly formatted问题(二百三十六)

简介&#xff1a; CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布&#xff1a;《Android系统多媒体进阶实战》&#x1f680; 优质专栏&#xff1a; Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a; 多媒体系统工程师系列【…...

【Router】路由器中NAT、NAPT、NPT是什么?

参考链接 NAT vs. NAPT: What’s the Difference? IPv6 Network Prefix Translation (NPt) | pfSense Documentation (netgate.com) 趣谈NAT/NAPT的原理&#xff0c;这篇不可不读&#xff01; - 知乎 (zhihu.com) NAT (Network Address Translation) NAT说明 NAT&#x…...

代码随想录算法训练营第三十九天|背包问题,416. 分割等和子集

背包问题&#xff0c;416. 分割等和子集 背包问题416. 分割等和子集 背包问题 有N件物品和一个最多能背重量为W 的背包。第i件物品的重量是weight[i]&#xff0c;得到的价值是value[i] 。每件物品只能用一次&#xff0c;求解将哪些物品装入背包里物品价值总和最大。 卡玛网的…...

可调用对象和Lambda

可调用对象&#xff1a; 函数 函数指针 函数对象 Lambda表达式(匿名函数) 01 函数对象 如果一个类实现了"函数调用运算符()"的重载&#xff0c;那么这个类的对象称为函数对象(仿函数) 函数对象的行为&#xff0c;类似于函数&#xff0c;可以被调用 #include …...

华为认证HCIE存储考啥?未来发展方向在哪?一个月就能轻松拿下?

说起HCIE&#xff0c;很多人第一反应都是路由交换、网络安全那些“热门”方向&#xff0c;而存储方向反而成了小众的存在。 其实&#xff0c;存储的江湖地位一点不低&#xff0c;尤其在数据爆炸的时代。 今天咱们就聊聊HCIE存储考什么、为什么要学&#xff0c;以及未来的可能…...

如何让自己的网站,被更多的人搜索到(免费方案)

文章目录 一、要做时间的朋友二、需要独立IP的服务器三、SEO信息如何设置设置网站TDK生成网站地图设置搜索引擎自动提交部署SSL证书加分项&#xff1a;定期更新文章 引言&#xff1a; 许多人都有这样一个问题&#xff1a;做好自己的网站&#xff0c;如何让这个网站被更多的人浏…...

Modbus 协议:工业自动化领域的通信脊梁

一、引言 在当今工业自动化的舞台上&#xff0c;数据的准确传输和设备间的有效通信是实现高效生产、精准控制的关键。Modbus 协议作为一种应用广泛、历史悠久的通信协议&#xff0c;在工业领域发挥着举足轻重的作用。从工厂的生产线到智能建筑的控制系统&#xff0c;从能源管理…...

函数的力量:掌握C语言的基石

目录 前言 标准库&#xff1a;C语言的百宝箱 头文件&#xff1a;库函数的藏宝图 实例分析&#xff1a;计算平方根的sqrt函数 功能描述 头文件包含的重要性 库函数文档的一般格式 自定义函数&#xff1a;释放你的编程创造力 函数的语法形式 函数的比喻 函数的举例 简化…...

U-Boot的移植流程

U-Boot的简化版启动流程&#xff1a; 1、设置状态寄存器 cpsr &#xff0c;使CPU进入 SVC 特权模式&#xff0c;并且禁止 FIQ 和 IRQ&#xff1b; 2、关闭看门狗、中断、MMU、Cache&#xff1b; 3、初始化部分寄存器和外设&#xff08;时钟、串口、Flash、内存&#xff09;&…...

xRDP – 在 Ubuntu 18.04、20.04、22.04、22.10、23.04(脚本版本 1.4.7)上轻松安装 xRDP

最新脚本Repository | c-nergy.be 概述 到目前为止&#xff0c;您应该知道 xrdp-installer 脚本旨在简化 xRDP 在 Ubuntu 操作系统上的安装和配置后操作。xRDP 是一款在 Linux 上启用远程桌面服务的软件。这意味着 Windows 用户可以使用他们的远程桌面客户端 &#xff08;mst…...

[Linux网络编程]04-多进程/多线程并发服务器思路分析及实现(进程,信号,socket,线程...)

一.思路 实现一个服务器可以连接多个客户端&#xff0c;每当accept函数等待到客户端进行连接时 就创建一个子进程; 核心思路&#xff1a;让accept循环阻塞等待客户端&#xff0c;每当有客户端连接时就fork子进程&#xff0c;让子进程去和客户端进行通信&#xff0c;父进程用于…...