c++中类的应用综合练习

整理思维导图

课上类实现> 、<、!=、||、!和后自增、前自减、后自减运算符的重载

代码部分:

#include <iostream>
using namespace std;
class complex
{int rel;int vir;
public:complex(int rel,int vir):rel(rel),vir(vir){}complex(){}void show();complex operator+(complex other);complex operator-(complex other);complex operator*(complex other);complex operator/(complex other);bool operator==(const complex other);bool operator>(const complex other);friend bool operator&&(const complex c1,const complex c2);friend bool operator||(const complex c1,const complex c2);complex operator++();complex operator++(int);complex operator--();complex operator--(int);
};
//+
complex complex::operator+(complex other)
{complex temp;temp.rel=this->rel+other.rel;temp.vir=this->vir+other.vir;return  temp;
}
//-
complex complex::operator-(complex other)
{complex temp;temp.rel=rel+other.rel;temp.vir=vir+other.vir;return  temp;
}
//*
complex complex::operator*(complex other)
{complex temp;temp.rel=rel*other.rel;temp.vir=vir*other.vir;return  temp;
}
//  /
complex complex::operator/(complex other)
{complex temp;temp.rel=rel/other.rel;temp.vir=vir/other.vir;return  temp;
}
// ==
bool complex::operator==(const complex other)
{return this->rel==other.rel&&this->vir==other.vir;
}
// >
bool complex::operator>(const complex other)
{return this->rel>other.rel&&this->vir>other.vir;
}
//&&
bool operator&&(const complex c1,const complex c2)
{return (c1.rel||c1.vir)&&(c2.rel||c2.vir);
}
//||
bool operator||(const complex c1,const complex c2)
{return (c1.rel&&c1.vir)||(c2.rel&&c2.vir);
}
//前++
complex complex::operator++()
{this->rel=this->rel+1;this->vir=this->vir+1;return *this;
}
//后++
complex complex::operator++(int)
{complex temp;temp.rel=this->rel;temp.vir=this->vir;this->rel=this->rel+1;this->vir=this->vir+1;return temp;
}
//前--
complex complex::operator--()
{complex temp;temp.rel=--(this->rel);temp.vir=--(this->vir);return  temp;
}
//后--
complex complex::operator--(int)
{complex temp;temp.rel=this->rel;temp.vir=this->vir;this->rel=this->rel-1;this->vir=this->vir-1;return temp;
}
void complex::show()
{cout << rel << "+" << vir << "i" << endl;}
int main()
{int num1=12,num2=28;num2=num1+num2;complex c1(num1,num2);complex c2(8,2);complex c3=c1.operator+(c2);c3=c1-c2;c3=c1*c2;c3=c1/c2;c3.show();cout << (c3==c2) << endl;cout << (c3>c2) <<  endl;cout << "c1&&c2?" << endl;cout << (c1&&c2) << endl;cout << "c1||c2?" << endl;cout << (c1||c2) << endl;complex c4(1,1);complex c6(1,1);complex c5(2,2);c5=c6+(c4++);c5.show();--c5;c5.show();c5--;c5.show();return 0;
}

效果图:

实现昨天作业中My_string类中的+,==,>运算符重载

代码部分:

#include <iostream>
#include <cstring>
using namespace std;
char c = '\0';
class My_string
{char *str;     //记录C风格的字符串int size;      //记录字符串长度
public://无参构造My_string():str(new char('\0')),size(0){cout << "My_string的无参构造" << endl;}//有参构造My_string(const char *p):str(new char[strlen(p)+1]),size(strlen(p)){strcpy(str,p);cout << "My_string的有参构造" << endl;}//拷贝构造My_string(const My_string &other):str(new char[other.size+1]),size(other.size){strcpy(str,other.str);   //完成两个类对象字符串内容的拷贝cout << "拷贝构造" << endl;}//拷贝赋值My_string &operator=(const My_string &other){//先把目标类对象指针原来指向的堆地址释放delete this->str;str = new char[other.size+1];   //申请新的能容纳下other类对象字符串的空间strcpy(str,other.str);    //拷贝字符串this->size = other.size;//返回自身的引用return *this;}//析构函数~My_string(){delete []str;   //释放str指向的多个空间}//at函数char &my_at(int num);  //可以判断访问是否合法My_string operator+(My_string &other);bool operator>(My_string &other);bool operator==(My_string &other);
};
char &My_string::my_at(int num)
{if(num<0||num>=this->size){cout << "访问越界" << endl;return c;}return str[num];
}
// +
My_string My_string::operator+(My_string &other)
{My_string temp;strcat(this->str,other.str);temp.size=this->size+other.size;return  temp;
}
//  ==
bool My_string::operator==(My_string &other)
{return this->size==other.size;
}
// >
bool My_string::operator>(My_string &other)
{return this->size>other.size;
}
int main()
{My_string s1 = "hello";My_string s2 = "world!";My_string s3 = s2;s1.my_at(0) = 'a';cout << s1.my_at(0) << endl;s1 = s2;}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/491140.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

视频智能分析平台LiteAIServer未戴安全帽检测算法助力矿山安全:精准监督矿工佩戴安全帽情况

矿山作业环境复杂多变&#xff0c;安全隐患层出不穷。其中&#xff0c;矿工未佩戴安全帽这一行为&#xff0c;看似微不足道&#xff0c;实则潜藏着巨大的安全风险。一旦发生事故&#xff0c;未佩戴安全帽的矿工将极易受到重创&#xff0c;甚至危及生命。因此&#xff0c;确保每…

k8s服务搭建与实战案例

Kubernetes&#xff08;K8s&#xff09;作为一个开源的容器编排平台&#xff0c;广泛应用于现代的云原生应用架构中。以下是一些常见的 **Kubernetes 实战案例**&#xff0c;包括从基础部署到高级应用场景的使用。通过这些案例&#xff0c;可以更好地理解 K8s 的运作原理和最佳…

JAVA学习日记(二十六)网络编程

一、网络编程的概念 常见的软件架构&#xff1a; 二、网络编程三要素 IP&#xff1a;设备在网络中的地址&#xff0c;是唯一的标识 端口号&#xff1a;应用程序在设备中的唯一标识 协议&#xff1a;数据在网络中传输的规则&#xff0c;常见的协议有UDP、TCP、http、https、f…

vue 设置 VUE_APP_TITLE 打包部署后不生效

VUE_APP_TITLE 名门望族云科技有限公司网站 这里的 名门望族云科技有限公司网站 两边不能加 (单引号) 部署后,浏览器刷新网站根目录

黑马头条day01 微服务搭建

1.请求调用流程 如http://localhost:8803/static/js/2.0195d7180dc783c3fe99.js这种静态资源&#xff0c;采用http的发送到本地8803端口的静态资源请求&#xff0c;而nginx配置的监听8801、8802、8803&#xff0c;所以请求走到nginx&#xff0c;nginx的admin配置文件 upstream…

LabVIEW热电偶传感器虚拟仿真实验系统

在教学和科研领域&#xff0c;实验设备的更新和维护成本较高&#xff0c;尤其是在经济欠发达地区&#xff0c;设备的短缺和陈旧化严重影响了教学质量。基于LabVIEW的热电偶传感器虚拟仿真实验系统能够通过模拟实验环境&#xff0c;提供一个成本低廉且效果良好的教学和研究平台。…

Win11 如何真正获取 Trustedinstaller 权限(非修改所有者及权限)

在新的系统中又该如何获得 Trustedinstaller 权限呢&#xff1f; 准备工作 1、首先&#xff0c;我们需要下载并安装 Set-NtTokenPrivilege 命令所需模块&#xff0c;我们先在系统 C 盘根目录新建名为“token”的文件夹。 2、以管理员身份运行 Powershell&#xff0c;然后输入…

ensp 静态路由配置

A公司有广州总部、重庆分部和深圳分部3个办公地点&#xff0c;各分部与总部之间使用路由器互联。广州、重庆、深圳的路由器分别为R1、R2、R3&#xff0c;为路由器配置静态路由&#xff0c;使所有计算机能够互相访问&#xff0c;实训拓扑图如图所示 绘制拓扑图 给pc机配置ip地址…

C语言学习day18:字符串操作/ANSI编码/宽字节/消息框/软件/游戏编码/逆向分析中的编码

今天我们将学习字符串操作&#xff0c;为什么要着重来说这个呢&#xff1f;因为这是为我们之后window开发和api做准备。好的&#xff0c;我们现在正式开始&#xff1a; 字符串 字符串就是一串文字。 比如&#xff1a;"好好学习&#xff0c;天天向上"就是一个字符串…

【论文阅读笔记】One Diffusion to Generate Them All

One Diffusion to Generate Them All 介绍理解 引言二、相关工作三、方法预备知识训练推理实现细节训练细节 数据集构建实验分结论附录 介绍 Paper&#xff1a;https://arxiv.org/abs/2411.16318 Code&#xff1a;https://github.com/lehduong/onediffusion Authors&#xff1…

深入理解偏向锁、轻量级锁、重量级锁

一、对象结构和锁状态 synchronized关键字是java中的内置锁实现&#xff0c;内置锁实际上就是个任意对象&#xff0c;其内存结构如下图所示 其中&#xff0c;Mark Word字段在64位虚拟机下占64bit长度&#xff0c;其结构如下所示 可以看到Mark Word字段有个很重要的作用就是记录…

暂停一下,给Next.js项目配置一下ESLint(Next+tailwind项目)

前提 之前开自己的GitHub项目&#xff0c;想着不是团队项目&#xff0c;偷懒没有配置eslint&#xff0c;后面发现还是不行。eslint的存在可以帮助我们规范代码格式&#xff0c;同时 ctrl s保存立即调整代码格式是真的很爽。 除此之外&#xff0c;团队使用eslint也是好处颇多…

Elasticsearch 架构及 Lucene 索引结构原理入门

文章目录 Elasticsearch 整体架构Lucene 索引结构Lucene 倒排索引核心原理倒排索引倒排表&#xff08;Posting List&#xff09; Elasticsearch 整体架构 一个 ES Index 在集群模式下&#xff0c;有多个Node&#xff08;节点&#xff09;组成&#xff0c;每个节点就是ES的 inst…

【SQL Server报错】在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。

目录 1、报错截图 2、解决步骤 1&#xff09;打开SQL Server配置管理器 2&#xff09;检查SQL Server服务 3&#xff09;检查SQL Server网络配置 4&#xff09;重启SQL Server数据库 1、报错截图 报错界面忘记截图了&#xff0c;我用的SQL Server2019&#xff0c;这里借…

每天40分玩转Django:Django视图和URL

Django视图和URL 一、课程概述 学习项目具体内容预计用时视图基础函数视图、类视图、视图装饰器90分钟URL配置URL模式、路由系统、命名URL60分钟请求处理请求对象、响应对象、中间件90分钟 二、视图基础 2.1 函数视图 # blog/views.py from django.shortcuts import render…

6、AI测试辅助-测试报告编写(生成Bug分析柱状图)

AI测试辅助-测试报告编写&#xff08;生成Bug分析柱状图&#xff09; 一、测试报告1. 创建测试报告2. 报告补充优化2.1 Bug图表分析 3. 风险评估 总结 一、测试报告 测试报告内容应该包含&#xff1a; 1、测试结论 2、测试执行情况 3、测试bug结果分析 4、风险评估 5、改进措施…

2024.12.14 TCP/IP 网络模型有哪几层?

2024.12.14 TCP/IP 网络模型有哪几层? 2024.12.14 今天周六 看到大伙都在考六级&#xff0c;我来复盘小林coding的计算机网络的知识点&#xff1a; TCP/IP 网络模型有哪几层? 问大家&#xff0c;为什么要有 TCP/IP 网络模型? 对于同一台设备上的进程间通信&#xff0c;有…

【学习笔记总结】华为云:应用上云后的安全规划及设计

一、背景和问题 数字化时代&#xff0c;随着信息技术的飞速发展&#xff0c;企业和各类组织纷纷将自身的应用程序迁移至云端。云计算凭借其诸多优势&#xff0c;如成本效益、可扩展性、灵活性以及便捷的资源共享等&#xff0c;已然成为了现代业务运营的重要支撑。 今年&#xf…

MySQL--》如何通过选择合适的存储引擎提高查询效率?

目录 MySQL体系结构 存储引擎简介 存储引擎特点 存储引擎选择 MySQL体系结构 体系结构&#xff1a;可以看作是由多个模块和组件组成的一个系统&#xff0c;每个部分都承担着不同的职责&#xff0c;从客户端到存储引擎每一层都精心设计来提供高效、可靠的数据库服务&#xf…

【机器学习与数据挖掘实战】案例02:基于K-Means算法的航空公司客户价值分析

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈机器学习与数据挖掘实战 ⌋ ⌋ ⌋ 机器学习是人工智能的一个分支&#xff0c;专注于让计算机系统通过数据学习和改进。它利用统计和计算方法&#xff0c;使模型能够从数据中自动提取特征并做出预测或决策。数据挖掘则是从大型数…