C++类Day2,作业思维

news2024/11/16 17:32:54

1.昨天的基础上完成运算符重载

#include <iostream>
using namespace std;

class Complex
{
private:
    int real;
    int vir;
public:
    //无参构造
    Complex()
    {
        cout << "无参构造" << endl;
    }
    //有参构造
    Complex(int a,int b):real(a),vir(b)
    {
        cout << "有参构造" << endl;
    }
    void show()
    {
        cout << real << "+" << vir << "i" << endl;
    }
    //+++++++++++++++++++++++++++
    Complex operator+(const Complex &a)
    {
        Complex temp;
        temp.real=this->real + a.real;
        temp.vir=this->vir + a.vir;
        return temp;
    }
    //----------------------------
    Complex operator-(const Complex &b)
    {
        Complex temp;
        temp.real=this->real - b.real;
        temp.vir=this->vir - b.vir;
        return temp;
    }
    //****************************
    Complex operator*(const Complex &c)
    {
        Complex temp;
        temp.real=this->real * c.real;
        temp.vir=this->vir * c.vir;
        return temp;
    }
    //(///)
    Complex operator/(const Complex &d)
    {
        Complex temp;
        temp.real=this->real / d.real;
        temp.vir=this->vir / d.vir;
        return temp;
    }
    //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    Complex operator%(const Complex &e)
    {
        Complex temp;
        temp.real=this->real % e.real;
        temp.vir=this->vir % e.vir;
        return temp;
    }
//    //+=  +=  +=  +=  +=  +=  +=  +=
//    Complex operator+=(const Complex &e)
//    {
//        this->real=this->real + e.real;
//        this->vir=this->vir + e.vir;
//        return *this;
//    }
//    //-=  -=  -=  -=  -=  -=  -=  -=
//    Complex operator-=(const Complex &f)
//    {
//        this->real=this->real - f.real;
//        this->vir=this->vir - f.vir;
//        return *this;
//    }
//    //*=  *=  *=  *=  *=  *=  *=  *=
//    Complex operator*=(const Complex &g)
//    {
//        this->real=this->real * g.real;
//        this->vir=this->vir * g.vir;
//        return *this;
//    }
//    // /=  /=  /=  /=  /=  /=  /=  /=
//    Complex operator/=(const Complex &h)
//    {
//        this->real=this->real / h.real;
//        this->vir=this->vir / h.vir;
//        return *this;
//    }
//    // %=  %=  %=  %=  %=  %=  %=  %=
//    Complex operator%=(const Complex &i)
//    {
//        this->real=this->real % i.real;
//        this->vir=this->vir % i.vir;
//        return *this;
//    }
    // ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++
//    Complex operator++()
//    {
//        ++this->real;
//        ++this->vir;
//        return *this;
//    }
    // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
//    Complex operator!()
//    {
//        this->real=!this->real;
//        this->vir=!this->vir;
//        return *this;
//    }
    //- - - - - - - - - - - - - - - - -
//    Complex operator-()
//    {
//        this->real=-this->real;
//        this->vir=-this->vir;
//        return *this;
//    }
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//    Complex operator~()
//    {
//        this->real=~this->real;
//        this->vir=~this->vir;
//        return *this;
//    }
    bool operator >(Complex &m)
    {
        if(this->real==m.real)
        {
            return this->vir<m.vir;
        }
        else
        {
            return this->real>m.real;
        }
    }
    bool operator==(Complex &p)
    {
        if(this->real==p.real)
        {
            return this->vir<p.vir;
        }
        else
        {
            return this->real>p.real;
        }
    }
    friend Complex operator--(Complex &j,int);
    friend bool operator<=(Complex &n,Complex &o);
    friend bool operator!=(Complex &q,Complex &r);
};
//Complex operator--(Complex &j,int)
//{
//    Complex temp;
//    temp.real=j.real--;
//    temp.vir=j.vir--;
//    return temp;
//}
bool operator<=(Complex &n,Complex &o)
{
    if(n.real==o.real)
    {
        return n.vir<o.vir;
    }
    else
    {
        return n.real>o.real;
    }
}
bool operator!=(Complex &q,Complex &r)
{
    if(q.real!=r.real)
    {
        return q.vir<r.vir;
    }
    else
    {
        return q.real>r.real;
    }
}
int main()
{
    Complex c1(4,11);
    Complex c2(2,9);
    //++++++++++++++++++
    Complex c3;
    c3=c1+c2;
    c3.show();//6+20i
    //------------------
    Complex c4;
    c4=c1-c2;
    c4.show();//2+2i
    //******************
    Complex c5;
    c5=c1*c2;
    c5.show();//8+99i
    //(//)
    Complex c6;
    c6=c1/c2;
    c6.show();//2+1i
    //%%%%%%%%%%%%%%%%%%%
    Complex c7;
    c7=c1%c2;
    c7.show();//0+2i
//    //+=  +=  += += += +=
//    c1+=c2;
//    c1.show();//6+20i
//    //-=  -=  -= -= -= -=
//    c1-=c2;
//    c1.show();//4+11i,以上面的结果位基础,需要把上面的c1+=c2注释,上面直接修改了值,影响主观判断
//    //*=  *=  *=  *=  *=
//    c1*=c2;
//    c1.show();//8+99i
//    // /=  /=  /=  /=  /=
//    c1/=c2;
//    c1.show();//4+11i
//    // %=  %=  %=  %=  %=
//    c1%=c2;
//    c1.show();//0+2i
    // ++ ++ ++ ++ ++ ++
//    c1=++c2;
//    c1.show();//3+10i
    // -- -- -- -- -- --
//    c1=c2--;
//    c1.show();//2+9i
//    c2.show();//1+8i
    //!!!!!!!!!!!!!!!!!!!!!
//    c1=!c1;
//    c1.show();//0+0i
    //- - - - - - - - -
//    c1=-c1;
//    c1.show();//-2+-9i
    //~~~~~~~~~~~~~~~~~~
//    c1=~c1;
//    c1.show();//-5-+12i
    //< < < < < < < < <
    bool a=c1>c2;
    cout << a << endl;//1
    //<=  <=  <=  <=  <=
    bool b=c1<=c2;
    cout << b << endl;//1
    //== == == == == ==
    bool c=c1==c2;
    cout << c <<endl;//1
    //!= !=  !=  !=  !=
    bool d=c1!=c2;
    cout << d << endl;//0
    return 0;
}

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Ubuntu18.04本地部署Stable-Diffusion-webui绘画

记录Ubuntu下安装Stable-Diffusion-webui&#xff0c;比较简单,以供参考。 系统&#xff1a;Ubuntu 18.04.4 LTS 内存&#xff1a;40G 显卡&#xff1a;32G 硬盘&#xff1a;500G 一、安装cuda 支持安装的cuda版本可以用nvidia-smi命令查看&#xff1a; ----------------…

Tomcat的优化及多实例部署

文章目录 一.Tomcat的优化1.tomcat启动速度优化——random2.Tomcat配置文件参数优化2.1 常用的优化相关参数2.2 优化的配置文件 二.Tomcat多实例部署1.为什么会有tomcat多实例部署2.多实例部署图示3.多实例部署的配置3.1 安装JDK3.2 安装启动Tomcat3.3 配置 tomcat 环境变量3.4…

筹码分布图高级用法——历史换手衰减系数自动计算公式

在使用筹码分布图时&#xff0c;很多人习惯于采用软件的默认设置&#xff0c;然而默认设置不一定能满足我们的要求。今天将向大家介绍筹码分布图的高级用法——历史换手衰减系数&#xff0c;并编写历史换手衰减系数自动计算公式。有些网友认为通过修改衰减系数&#xff0c;可以…

【远程控制】向日葵连接Ubuntu黑屏

Ubuntu 远程黑屏 Ubuntu 22.04 方法 1&#xff1a;切换桌面工作模式方法 2&#xff1a;安装 lightdm 插件来渲染界面客服工单回答 Ubuntu 22.04 方法 1&#xff1a;切换桌面工作模式 进入到登录页 点击用户名 点击右下角&#xff0c;切换桌面工作模式为Ubuntu on xorg即可 …

基于Python+MySQL所写的音乐网管理系统

点击以下链接获取源码资源&#xff1a; https://download.csdn.net/download/qq_64505944/87971719?spm1001.2014.3001.5503 《甜橙音乐网》程序使用说明 在虚拟环境下输入命令“python manage.py runserver”启动项目&#xff0c;启动成功后&#xff0c;访问“http://127.0…

x264 deblock filter 代码解读

在x264源码里&#xff0c;void x264_frame_deblock_row( x264_t *h, int mb_y )函数中定义了如下的宏片段&#xff0c;这段代码旨在完成对MB的deblocking 操作&#xff0c;其中针对edge 取不同的值的时候&#xff0c;有的做deblocking&#xff0c; 有的不做&#xff0c;看这部分…

计算机网络的89个核心概念

主机&#xff1a;计算机网络上任何一种能够连接网络的设备都被称为主机或者说端系统&#xff0c;比如手机、平板电脑、电视、游戏机、汽车等&#xff0c;随着 5G 的到来&#xff0c;将会有越来越多的终端设备接入网络。 通信链路&#xff1a;通信链路是由物理链路&#xff08;…

[nexus]基于nexus搭建npm仓库及上传插件到仓库

目录 环境信息搭建npm仓库创建存储位置创建proxy仓库创建hosted仓库创建group仓库配置域 下载及上传登录下载上传 环境信息 nexus: 3.29.2-02node: v14.18.2npm: 6.14.15 搭建npm仓库 创建存储位置 这一步不是必须的&#xff0c;可以跟之前创建的复用 依次打开 [设置] ->…

【Docker】Docker的简介安装以及使用Docker安装Mysql案例

Docker docker概述 Docker是一个开源的应用容器引擎诞生于2013年初&#xff0c;基于Go语言实现&#xff0c;dotClou公司出品&#xff08;后改名为Docker inc&#xff09;Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可以直接的容器中&#xff0c;然后发布到任何…

测试的流程

目录&#xff1a; 测试流程价值与体系测试计划业务架构分析思路bug基本概念bug处理流程测试流程管理jira系统-测试用例管理测试流程管理 jira 系统-Bug管理测试总结业务架构分析工具plantuml测试流程管理jira系统-测试流程定制测试流程管理 jira 系统-Bug管理流程定制 1.测试…

HTML5新特性总结

新增语义化标签 新增了很多语义化标签&#xff0c;如header、footer、nav、article、section(页面中的某段文字&#xff0c;或文章中的某段文字)、aside、main 其中article标签里可以包含多个section&#xff1b; section强调的是分段或分块&#xff0c;若想将一块内容分成几…

ARM学习(23)AMP和SMP的认识与理解

笔者来聊聊AMP和SMP架构理解&#xff08;多核下系统&#xff09;。 简介介绍 笔者经常听到ARM架构时&#xff0c;谈到SMP的架构或者AMP的架构&#xff0c;今天特意来了解一下&#xff0c; SMP&#xff1a;Symmetric multiprocessing&#xff0c;对称多处理器AMP&#xff1a;A…

leetcode:2154. 将找到的值乘以 2(python3解法)

难度&#xff1a;简单 给你一个整数数组 nums &#xff0c;另给你一个整数 original &#xff0c;这是需要在 nums 中搜索的第一个数字。 接下来&#xff0c;你需要按下述步骤操作&#xff1a; 如果在 nums 中找到 original &#xff0c;将 original 乘以 2 &#xff0c;得到新…

LangChain大型语言模型(LLM)应用开发(二):Conversation Memory

LangChain是一个基于大语言模型&#xff08;如ChatGPT&#xff09;用于构建端到端语言模型应用的 Python 框架。它提供了一套工具、组件和接口&#xff0c;可简化创建由大型语言模型 (LLM) 和聊天模型提供支持的应用程序的过程。LangChain 可以轻松管理与语言模型的交互&#x…

Java9集合类新增功能

前言 Java8及Java9在集合Collection类中新增了一些很好用的新方法&#xff0c;能方便程序员更便捷的处理集合数据&#xff0c;本文对其中的一些方法进行总结 一. List 1.创建 // 传统方法List<String> list1 new ArrayList<>();list1.add("item1");li…

论文导读 | Operation ResearchManagement Science近期文章精选

推文作者&#xff1a;周梓渊 编者按 本期我们选取了最近来自Operation Research和Management Science的六篇文章以飨读者&#xff0c;前四篇文章来自OR&#xff0c;最后两篇文章来自MS&#xff1b;内容涉及多个方面&#xff0c;实现了方法论与具体应用实践的结合&#xff0c;例…

Node.js HTTP 模块的内存泄露问题

很久没有逛社区了&#xff0c;晚上回来看了一下最近的情况&#xff0c;突然看到一个内存泄露问题&#xff0c;作为一个 APM 开发者&#xff0c;自然想分析其中的原因。 问题 下面介绍一下具体的问题。看一下 demo。 const http require(http)async function main () {let i…

用NumPy,梯度下降的方法来解决线性回归

import matplotlib.pyplot as plt import numpy as npdef reckonCost(X,y,theta):my.shape[0]innernp.power( ( (Xtheta)-y.T ) , 2)return np.sum(inner) / (2*m)# 定义梯度下降函数 def gradient_descent(X, y, theta, alpha, num_iters):# m len(y) # 样本数量my.shape[0]…

Leetcode-每日一题【86.分隔链表】

题目 给你一个链表的头节点 head 和一个特定值 x &#xff0c;请你对链表进行分隔&#xff0c;使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。 你应当 保留 两个分区中每个节点的初始相对位置。 示例 1&#xff1a; 输入&#xff1a;head [1,4,3,2,5,2], x 3输…

【数据挖掘】时间序列教程【三】

2.7 平稳性 序列的平稳性 是一个关键属性&#xff0c;它允许我们应用许多时间序列分析的标准工具。 如果对于大小 n 和任何整数 ,观察发现 具有与 相同的联合分布&#xff0c;则时间序列是严格平稳的。 换句话说&#xff0c;从分布的角度来看&#xff0c;平稳时间序列对移位…