C++(三)——运算符重载
运算符重载
重定义或重载大部分 C++ 内置的运算符就能使用自定义类型的运算符。重载的运算符是带有特殊名称的函数,函数名是由关键字 operator 和其后要重载的运算符符号构成的。与其他函数一样,重载运算符有一个返回类型和一个参数列表。不能为了重载而重载 重载之后的运算符和原来的使用方式特性一模一样
可重载的运算符列表
双目算术运算符 + (加),-(减),*(乘),/(除),% (取模)关系运算符 ==(等于),!= (不等于),< (小于),> (大于),<=(小于等于),>=(大于等于)逻辑运算符 ||(逻辑或),&&(逻辑与),!(逻辑非)单目运算符 + (正),-(负),*(指针),&(取地址)自增自减运算符 ++(自增),--(自减)位运算符 | (按位或),& (按位与),~(按位取反),^(按位异或),,<< (左移),>>(右移)赋值运算符 =, +=, -=, *=, /= , % = , &=, |=, ^=, <<=, >>=空间申请与释放 new, delete, new[ ] , delete[]其他运算符 ()(函数调用),->(成员访问),,(逗号),[](下标)
不可重载的运算符列表
. :成员访问运算符
-> :成员指针访问运算符
:: :域运算符
sizeof :长度运算符
?: :条件运算符
# : 预处理符号
+ - 两个运算符的重载
#include <iostream>using namespace std;class dog
{private:int weight ;string name;public://构造函数dog(string name , int weight){this->name = name ;this->weight = weight ;}//拷贝构造dog(const dog & obj){this->name = obj.name;this->weight = obj.weight;}//移动dog(const dog && obj){this->name = obj.name;this->weight = obj.weight;}//析够函数~dog(){}//+两只狗体重之和dog & operator +(const dog & obj ){static dog temp(" ",1);temp.weight = this->weight + obj.weight;temp.name = this->name + "和" + obj.name;return temp;}//-两只狗体重之差dog & operator -(const dog & obj ){static dog temp(" ",1);temp.weight = this->weight - obj.weight;temp.name = this->name + "和" + obj.name+"体重相差";return temp;}friend ostream & operator <<(ostream & os , dog & obj );};//输出<<重载
ostream & operator <<(ostream & os , dog & obj )
{os<<"名字:"<<obj.name<<endl<<"体重:"<<obj.weight<<endl;return os;
}int main()
{dog g1("土狗🐶",25);dog g2("小狗🐶",26);cout<<g1<<g2;cout<<g1+g2;cout<<g2-g1;return 0;
}
运行结果:
其他运算符实例代码
#include <iostream>
#include <cstring>using namespace std;class Arr
{private:char * arr;int len ;int size;public://构造Arr(char * str){len = strlen(str);size = len+1;arr = new char[size];strcpy(arr,str);}//拷贝构造🐶Arr(Arr & obj){arr = new char[obj.size];len = obj.len;size = obj.size;strcpy(arr,obj.arr);}//🐣移动构造🐶Arr(Arr && obj ){len = obj.len;size = obj.size;arr = obj.arr;obj.arr = nullptr;}//+=重载:两个字符串连接Arr & operator +=(const Arr &obj){if(obj.len + this->len > this->size ){char * p = new char[obj.len+len+1];strcpy(p,arr);delete []arr;arr = p ;p = nullptr;size = obj.len+len+1;}strcat(arr,obj.arr);len = len + obj.len ;return *this;}//= 实现字符串复制功能🐮Arr & operator =(const Arr &obj){if(obj.len > size ){char *p = new char[obj.size];strcpy(p,obj.arr);arr = p ;p = nullptr;size = obj.size;}else{strcpy(this->arr,obj.arr);}len = obj.len;return *this;}//[] 🏇char & operator [](const int i ){ return arr[i];}//()🦆void operator ()(){cout<<"hello new ()"<<endl;}friend ostream & operator <<(ostream & os , const Arr & obj);friend istream & operator >>(istream & is , const Arr & obj );};ostream & operator <<(ostream & os , const Arr & obj)
{os<<"data:"<<obj.arr<<endl<<"len ="<<obj.len<<endl<<endl<<"size="<<obj.size<<endl;return os;}istream & operator >>(istream & is , const Arr & obj )
{is>>obj.arr;return is;
}
int main()
{char buf[] = {"n牛🐮"};char buf1[] = {"m马🏇"};Arr a = buf;Arr b = buf1;cout<<a<<endl;a +=b;cout<<a<<endl;a=b;cout<<a<<endl;a[0]= 't';cout<<a<<endl;a();cin>>a;cout<<a<<endl;}
相关文章:
C++(三)——运算符重载
运算符重载 重定义或重载大部分 C 内置的运算符就能使用自定义类型的运算符。重载的运算符是带有特殊名称的函数,函数名是由关键字 operator 和其后要重载的运算符符号构成的。与其他函数一样,重载运算符有一个返回类型和一个参数列表。不能为了重载而重…...
【Springcloud】elk分布式日志
【Springcloud】elk分布式日志 【一】基本介绍【二】Elasticsearch【1】简介【2】下载【3】安装【4】启动 【三】Logstash【1】简介【2】下载【3】安装【4】启动 【四】Kibana【1】简介【2】下载【3】安装【4】启动 【五】切换中文【六】日志收集 【一】基本介绍 (…...
面试半个月后的一些想法
源于半个月面试经历后的一些想法,刚开始想的是随便写写,没想到居然写了这么多。 找不到目标找不到意义亦或是烦躁的时候,就写写文章吧,把那些困扰你很久的问题铺开来 花时间仔细想想,其实真正让我们生气懊恼࿰…...
基于FPGA的图像二值化处理,包括tb测试文件和MATLAB辅助验证
1.算法运行效果图预览 将FPGA的数据导入到matlab进行显示 2.算法运行软件版本 Vivado2019.2 matlab2022a 3.部分核心程序 timescale 1ns / 1ps ............................................................................. module test_image;reg i_clk; reg i_rst; r…...
文件操作(个人学习笔记黑马学习)
C中对文件操作需要包含头文件<fstream > 文件类型分为两种: 1.文本文件:文件以文本的ASCII码形式存储在计算机中 2.二进制文件:文件以文本的二进制形式存储在计算机中,用户一般不能直接读懂它们 操作文件的三大类: 1.ofstream: 写操作 …...
Android Studio新版本New UI及相关设置丨遥遥领先版
1、前言 俗话说工欲善其事必先利其器嘛,工具用不好怎么行呢,借着Android Studio的更新,介绍一下新版本中的更新内容,以及日常开发中那些好用的设置。 2、关于新版本 2.1、最新正式版本 Android Studio Giraffe | 2022.3.1 Pat…...
新型人工智能技术让机器人的识别能力大幅提升
原创 | 文 BFT机器人 在德克萨斯大学达拉斯分校的智能机器人和视觉实验室里,一个机器人在桌子上移动一包黄油玩具。通过达拉斯分校计算机科学家团队开发的新系统,机器人每推动一次,就能学会识别物体。 新系统允许机器人多次推动物体…...
聚观早报|蚂蚁集团发布“蚁天鉴”;vivo X100系列即将亮相
【聚观365】9月12日消息 蚂蚁集团发布“蚁天鉴” vivo X100系列即将亮相 台积电8月份营收59亿美元 8月公共充电桩环比增加6.1万台 吴泳铭接替张勇出任阿里云代理董事长与CEO 蚂蚁集团发布“蚁天鉴” 蚂蚁集团发布大模型安全一体化解决方案“蚁天鉴”。该方案包含了大模型…...
读高性能MySQL(第4版)笔记05_优化服务器设置
1. 除非遇到异常情况,否则不需要调整配置 1.1. 不要“调优”服务器,不要使用比率、公式或“调优脚本”作为设置配置变量的基础 1.1.1. 在互联网上搜索配置建议并不总是一个好主意,你会在博客、论坛等找到很多糟糕的建议 1.1.2. 很难判断谁…...
Spring Boot跨域问题简介
什么是跨域问题? 在Web开发中,跨域指的是在浏览器中访问一个不同于当前域名的资源。浏览器出于安全考虑,限制了这种跨域资源的访问。具体来说,当浏览器使用XMLHttpRequest或Fetch API发送跨域请求时,目标服务器必须在…...
【Java】过滤器和拦截器区别
文章目录 前言1、过滤器 (Filter)2、拦截器 (Interceptor)3、我们不一样3.1、实现原理不同3.2、使用范围不同3.3、触发时机不同 4、拦截的请求范围不同5、注入Bean情况不同6、控制执行顺序不同总结 前言 准备环境 我们在项目中同时配置 拦截器 和 过滤器。 1、过滤器 (Filter…...
es滚动查询分析和使用步骤
ES在进行普通的查询时,默认只会查询出来10条数据。我们通过设置es中的size可以将最终的查询结果从10增加到10000。如果需要查询数据量大于es的翻页限制或者需要将es的数据进行导出又当如何? Elasticsearch提供了一种称为"滚动查询"(…...
飞书公式总结
文本处理函数 飞书中的表格,需要实现 内容内容1条件1内容2条件2内容3条件3今天是周一;可以出去玩今天是周一能今天天气不错不能可以出去玩能 条件1,2,3为能时,把对应的内容1,内容2,内容3复制到内容 TEX…...
vue3.2 导出pdf文件或表格数据
要在Vue 3中导出PDF文件,你可以使用第三方库来处理PDF生成和导出。一个常用的库是jspdf,它允许你在客户端或服务器端生成PDF文档。 以下是在Vue 3中使用jspdf库导出PDF文件的基本步骤: 第一步首先,安装jspdf库。你可以使用npm或ya…...
Linux学习--MySQL学习之查询语句
所有实现基于mysql8.0.26实现,事例代码 1:常用函数 字符函数数学函数日期函数聚集函数数学计算if函数case函数 函数:MySQL服务内置命令 语法:函数名(表头名) select格式 SELECT 函数(表头名) FROM 库名.表名; SE…...
三、视频设备的枚举以及插拔检测
一、前言 本章主要讲述,如何获取设备名称以及guid,采集设备的采集格式识别,设备的插拔 设备列表以及属性的获取使用的directshow(后续的MediaFoundation无法获取OBS摄像头) 设备的插拔使用的是QT 捕获系统消息,捕获到设备插拔后&a…...
Qt开发_调用OpenCV(4.x)完成人脸检测并绘制马赛克(摄像头实时数据)
一、前言 这个基于Qt和OpenCV的人脸检测和人脸打码项目是通过实时视频流中的人脸识别来保护隐私。 该项目目的是保护隐私并确保人脸数据安全。在某些情况下,使用实时视频流进行人脸检测和识别可能涉及对个人隐私的侵犯。通过在图像中打码人脸区域,可以避免未经许可的人脸出…...
ssl证书有效期为什么越来越短?
随着互联网的发展和网络安全意识的提升,SSL证书在保护网络通信安全方面起到了极为重要的作用。SSL证书通过加密通信数据,确保信息在传输过程中不被窃取或篡改,为用户提供了安全可靠的网络环境。然而,近年来SSL证书的有效期不断缩短…...
XFF漏洞利用([SWPUCTF 2021 新赛]Do_you_know_http)
原理 常见的存在HTTP头注入的参数 User-Agent:使得服务器能够识别客户使用的操作系统,浏览器版本等.(很多数据量大的网站中会记录客户使用的操作系统或浏览器版本等存入数据库中) Cookie:网站为了辨别用户身份进行se…...
Java——》JVM对原生的锁做了哪些优化
推荐链接: 总结——》【Java】 总结——》【Mysql】 总结——》【Redis】 总结——》【Kafka】 总结——》【Spring】 总结——》【SpringBoot】 总结——》【MyBatis、MyBatis-Plus】 总结——》【Linux】 总结——》【MongoD…...
华为云云耀云服务器L实例评测|用docker搭建frp服务测试
华为云云耀云服务器L实例评测|用docker搭建frp服务测试 0. 环境 华为云耀云L实例EulerOS 1. 安装docker 检查yum源,本EulerOS的源在这里: cd /etc/yum.repos.d 更新源 yum makecache 安装 yum install -y docker-engine 运行测试 d…...
群狼调研(长沙满意度调查专业公司)开展公交车乘客满意度调查
在城市的喧嚣中,公交车是我们日常出行的重要工具。那么,公交车的服务是否满足我们的期待?它还有哪些改进的空间?在这篇文章中,群狼调研**(长沙汽车制造商满意度调查)**通过一个深入的公交车乘客满意度调查,为您解答这些问题。 …...
Spring与OAuth2:实现第三方认证和授权的最佳实践
🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…...
Mysql的定时备份与恢复
MySQL定时备份与还原 MySQL备份方案 物理备份:这种备份方式将数据库的实际文件复制到另一个位置。常见的物理备份工具包括mysqldump和Percona XtraBackup。具体操作如下: 使用mysqldump 命令备份数据库: mysqldump -u username -p database_…...
学习Java基础面试题第五天
一、Java面试题第五天 1.spring字符串的最大长度 转自:String字符串的最大长度是多少?在学习和开发过程中,我们经常会讨论 short ,int 和 long 这些基本数据类型的取值范围,但是对于 String 类型我们好像很少注意它的…...
(10)(10.9) 术语表(一)
文章目录 前言 1 2.4Ghz 2 AGL 3 AHRS 4 APM 5 AMA 6 Arduino 7 APM (AutoPilot Mega) 8 ATC 9 Copter 10 Plane 11 Rover 12 BEC 13 Bootloader 14 COA 15 DCM 16 Eagle file 17 ESC 18 Firmware 19 FPV 20 FTDI 前言 !Note 术语表未编入索…...
面试(类加载器)
一、目标 类加载器(ClassLoader)是Java虚拟机(JVM)的一部分,用于加载Java类文件到内存中,并生成对应的Class对象。类加载器负责在运行时查找和加载类文件,为Java程序提供动态加载和运行时扩展的…...
二维差分---基础算法
书接上回 a二维数组是b二维数组的前缀和数组,b二维数组是a二维数组的差分数组,也就是说a[i][j]b[1][1]b[1][2] ......b[i][1] b[i][2] ...... b[i][j] ,下图是b的二维数组 如图,当你想要整个矩阵中的一个子矩阵都加上一个C,如果我们将b[x1][x2]加上C,那么a数组右下角所有的…...
C++之结构体智能指针shared_ptr实例(一百九十四)
简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…...
wordpress url改错了/seo优化一般包括哪些
1.首先检查 有没有安装ssh rpm-qa | grep ssh 如果没有安装 yum install ssh 2.在每一台机器上执行 ssh-keygen -t rsa 会在root/.ssh/生成两个文件。(此时用的root帐户,不同的帐户是否生成的位置不一样。没有试过!)将每一台机器上…...
24小时学会网站建设/沈阳专业seo排名优化公司
游戏音乐外包公司作为第三方,这其中的市场有多么残酷、谁有多深、竞争有多激烈是不为人知的。游戏音乐制作人在背后默默工作付出的辛苦汗水,也是我们不曾了解的,不少人认为游戏过剩已经成为现实,曾经有一段时间,只要有…...
城管网站内容建设方案/seoul是什么意思
整体逻辑:service提供FileReader函数,directive提供点击事件的绑定和监听,controller用来修改html上的ng-src属性值 1.HTML <input type"file" file-model"myFile">/*AngularJS定义的file-Model属性用于对文件进行…...
crm系统有哪些/长沙网站优化推广方案
客户端工具:mysql,mysqladmin,mysqldump,mysqlcheck 非客户端类的管理工具:myisamchk,myisampack mysql命令提示符 mysql> 等待输入命令 > 前面提供的‘未提供结束’ ”> > —> 续航符 /*> 注释信息 mysql的命令行编辑快捷键 ctrlw&am…...
大连疫情最新通报/南昌seo外包公司
重庆交通大学学生实验报告实验课程名称开课实验室学院年级开课时间至学年第学期实验一基本指令的编程练习一、实验目的1、熟悉plc实验装置,s7-200系列编程控制器的外部接线方法。2、了解编程软件step7的编程环境,软件的使用方法。3、掌握与、或、非逻辑功…...
嘉兴网站建设技术开发/免费域名注册
package java.util;import java.util.function.Predicate; import java.util.stream.Stream; import java.util.stream.StreamSupport;/***1.Collection接口是集合继承关系中的根接口(root interface),有些集合允许重复元素, * 有些集合有序,JDK不提供…...