C++---重载

1、运算符重载

#include <iostream>
 
using namespace std;
class complex
{
    int rel;
    int vir;
public:
    complex(){}
    complex(int rel,int vir):rel(rel),vir(vir){}
    void show()
    {
        cout << rel << "+" << vir << "i" << endl;
    }
    //算数运算符重载
    //+
    //complex operator+(complex c1);
    friend complex operator+(const complex c1,const complex c2);
    complex operator-(complex c1);
    friend complex operator-(const complex c1,const complex c2);
    //*
    complex operator*(complex c1);
    friend complex operator*(const complex c1,const complex c2);
    //%
    complex operator%(complex c1);
    friend complex operator%(const complex c1,const complex c2);
 
    // 关系运算符
    //>
    //bool operator>(complex c1);
    friend bool operator>(const complex c1,const complex c2);
    //<
//    bool operator<(complex c1);
    friend bool operator<(const complex c1,const complex c2);
    //>=
    bool operator>=(complex c1);
    //friend operator>=(const complex c1,const complex c2);
    // <=
    //bool operator<=(complex c1);
    friend bool operator<=(const complex c1,const complex c2);
    // !=
    bool operator!=(complex c1);
    //逻辑运算符
    //&&
    bool operator&&(complex c1);
    //++
    friend complex operator++(complex c1,int);
    //<<
    friend ostream &operator<<(ostream &out,complex c1);
    //>>
    friend istream &operator >>(istream &in,complex &c1);
    //
    friend bool operator^(const complex c1,const complex c2);
    //~
    friend int operator~(const complex c1);
 
 
 
 
};
//算术运算符重载
//+
//complex complex::operator+(complex c1)
//{
//    complex temp;
//    temp.rel=this->rel+c1.rel;
//    temp.vir=this->vir+c1.vir;
//    return  temp;
//}
complex operator+(const complex c1,const complex c2)
{
    complex temp;
    temp.rel=c1.rel+c2.rel;
    temp.vir=c1.vir+c2.vir;
    return  temp;
}
//-
complex complex::operator-(complex c1)
{
    complex temp;
    temp.rel=this->rel-c1.rel;
    temp.vir=this->vir-c1.vir;
    return  temp;
}
complex operator-(const complex c1,const complex c2)
{
    complex temp;
    temp.rel=c1.rel-c2.rel;
    temp.vir=c2.vir-c2.vir;
    return temp;
}
//*
complex complex::operator*(complex c1)
{
    complex temp;
    temp.rel=this->rel*c1.rel;
    temp.vir=this->vir*c1.vir;
    return temp;
}
complex operator*(const complex c1,const complex c2)
{
    complex temp;
    temp.rel=c1.rel*c2.rel;
    temp.vir=c2.vir*c2.vir;
    return  temp;
}
//%
complex complex::operator%(complex c1)
{
    complex temp;
    if(c1.rel==0||c1.vir==0)
    {
        cout << "分母错误" << endl;
    }
    temp.rel=this->rel%c1.rel;
    temp.vir=this->vir%c1.vir;
    return temp;
}
complex operator%(const complex c1,const complex c2)
{
    complex temp;
    if(c2.rel==0||c2.vir==0)
    {
        cout << "分母错误"  << endl;
    }
    temp.rel=c1.rel%c2.rel;
    temp.vir=c1.vir%c2.vir;
    return  temp;
}
//关系运算符
// >
//bool complex::operator>(complex c1)
//{
//    return this->rel>c1.rel;
//}
bool operator>(const complex c1,const complex c2)
{
    return c1.rel>c2.rel;
}
// <
//bool complex::operator<(complex c1)
//{
//    return this->rel<c1.rel;
//}
bool operator<(const complex c1,const complex c2)
{
    return c1.rel<c2.rel;
}
//>=
bool complex::operator>=(complex c1)
{
    if(this->rel>=c1.rel)
    {
        if(this->rel==c1.rel)
        {
            return this->vir==c1.vir;
        }
        else
        {
            return this->rel>c1.rel;
        }
    }
    else
    {
        return this->rel>c1.rel;
    }
}
// <=
bool operator<=(const complex c1,const complex c2)
{
    if(c1.rel<=c2.rel)
    {
        if(c1.rel==c2.rel)
        {
            return c1.vir==c2.vir;
        }
        else
        {
            return  c1.rel<=c2.rel;
        }
    }
    else
    {
        return  c1.rel<=c2.rel;
    }
}
//!=
bool complex::operator!=(complex c1)
{
    return this->rel!=c1.rel||this->vir!=c1.vir;
 
}
 
//逻辑运算符
//&&
bool complex ::operator&&(complex c1)
{
    return (this->rel&&c1.rel)||(this->vir&&c1.vir);
}
//++
complex operator++(complex c1,int)
{
    complex temp;
    temp.rel=c1.rel++;
    temp.vir=c1.vir++;
    return  temp;
}
//<<
ostream &operator<<(ostream &out,complex c1)
{
    out<< c1.rel << "+" << c1.vir << "i" <<endl;
    return out;
}
//>>
istream &operator >>(istream &in,complex &c1)
{
    in >> c1.rel >> c1.vir;
    return  in;
}
 
//^
bool operator^(const complex c1,const complex c2)
{
    if(c1.rel == c2.rel)
        return false;
    else
        return  true;
}
//~
int operator~(const complex c1)
{
    int temp(~c1.rel);
    return temp;
}
 
 
 
int main()
{
    complex a1(1,5),a2(3,5);
   // complex a3=a1+a2;
   // a3.show();
    complex a3=operator+(a1,a2);
    a3.show();
    //complex a4=a1-a2;
   // a4.show();
    complex a4=operator-(a1,a2);
    a4.show();
    //*
//    complex a5=a1*a2;
//    a5.show();
    complex a5=operator*(a1,a2);
    a5.show();
    //%
//    complex a6=a1%a2;
//    a6.show();
    complex a6=operator%(a1,a2);
    a6.show();
    //关系运算符
    // >
    cout << (a1>a2) << endl;
    // <
    cout << (a1<a2) << endl;
    cout << (a1>=a2) << endl;
    cout << (a1<=a2) << endl;
    cout << (a1&&a2) <<endl;
    complex a7=a1++;
    a7.show();
    cout << "out=" << a1 << endl;
    cin >> a5 >>a6;
    cout << (a1^a2) << endl;
    int b1=10;
    int b2=~b1;
    cout << "~b1" << b2 << endl;
    cout << "Hello World!" << endl;
    return 0;
}
2、思维导图

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

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

相关文章

(待更)DRF: 序列化器、View、APIView、GenericAPIView、Mixin、ViewSet、ModelViewSet的源码解析

前言&#xff1a;还没有整理&#xff0c;后续有时间再整理&#xff0c;目前只是个人思路&#xff0c;文章较乱。 注意路径匹配的“/” 我们的url里面加了“/”&#xff0c;但是用apifox等非浏览器的工具发起请求时没有加“/”&#xff0c;而且还不是get请求&#xff0c;那么这…

31.Gateway网关-跨域问题

跨域 1.域名不同&#xff1a;www.baidu.com和www.taobao.com,www.taobao.org 2.域名相同&#xff0c;端口不同。localhost:8080和localhost:8081 跨域问题 浏览器禁止请求的发起者与服务端发生跨域ajax请求&#xff0c;请求被浏览器拦截的问题。 解决方案 CORS 浏览器询…

0426_C高级4

练习1&#xff1a; 输入一个数字&#xff0c;实现数字逆置&#xff08;不使用字符串截取方式&#xff09; 1 #!/bin/bash2 read -p "输入一个数字&#xff1a;" number3 p$number4 result5 while [ $p -ne 0 ]6 do7 result$((result*10p%10))8 p$((p/10))9 …

input框添加验证(如只允许输入数字)中文输入导致显示问题的解决方案

文章目录 input框添加验证(如只允许输入数字)中文输入导致显示问题的解决方案问题描述解决办法 onCompositionStart与onCompositionEnd input框添加验证(如只允许输入数字)中文输入导致显示问题的解决方案 问题描述 测试环境&#xff1a;react antd input (react的事件与原生…

无人机GB42590接收端 +接收端模组,同时支持2.4G与5.8G双频

严格按照GB42590的协议开发的发射端&#xff0c;通过串口和模块通讯&#xff0c;默认波特率 921600。 http://www.doit.am/深圳四博智联科技有限公司https://shenzhendoit.taobao.com/category-1734422372.htm?spma1z10.1-c-s.0.0.560c74d77eT01G&searchy&catNameGB4…

VC2022 + protobuf

google这是有私心啊&#xff0c;protobuf从某个版本开始&#xff0c;依赖了一个google自己推出的大型组件集&#xff0c;Abseil&#xff0c;有点类似于Boost了&#xff0c;业内用的人&#xff0c;从个人狭窄的圈子来说&#xff0c;应该是不多的&#xff0c;据说google的众贤用的…

【LLMOps】小白详细教程,在Dify中创建并使用自定义工具

文章目录 博客详细讲解视频点击查看高清脑图 1. 搭建天气查询http服务1.1. flask代码1.2. 接口优化方法 2. 生成openapi json schema2.1. 测试接口2.2. 生成openapi schema 3. 在dify中创建自定义工具3.1. 导入schema3.2. 设置工具认证信息3.3. 测试工具 4. 调用工具4.1. Agent…

docker启动的mysql8中文乱码问题和无法输入中文

问题描述&#xff1a; 1.中文显示乱码 2.无法输入中文 中文乱码临时方案&#xff1a; show variables like ‘character%’; SET NAMES utf8mb4; SET CHARACTER SET utf8mb4; 中文乱码永久方案&#xff1a; vim /etc/my.cnf[client] default-character-setutf8mb4[mysql]…

Linux详解:进程创建

文章目录 进程创建fork函数写时拷贝页表fork常规用法fork调用失败的原因 进程创建 fork函数 在linux 中fork函数&#xff0c;它从已经存在的进程中创建一个新的进程&#xff0c;新进程为子进程&#xff0c;而原进程为父进程。 #include<unistd.h> pid_t fork(void);返…

嵌入式学习58-ARM7(字符设备驱动框架led)

知识零碎&#xff1a; kernel 内核 printk 内核打印 cat /proc/devices insmod …

如何通过安全数据传输平台,保护核心数据的安全传输?

在数字化的浪潮中&#xff0c;企业的数据安全传输显得尤为关键。随着网络攻击手段的日益复杂&#xff0c;传统的数据传输方式已不再安全&#xff0c;这就需要我们重视并采取有效的措施&#xff0c;通过安全数据传输平台来保护核心数据。 传统的数据传输面临的主要问题包括&…

【介绍下IDM的实用功能】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…

【已解决】仅当从 VS 开发人员命令提示符处运行 VS Code 时,cl.exe 生成和调试才可用。

当我们在使用vs code运行.c文件时可能会出现如下报错&#xff1a; 这是因为我们使用的生成和调试方式是cl.exe&#xff0c;我们需要更改到gcc.exe。 解决办法&#xff1a; 将所需运行的文件复制粘贴到新的一个文件夹下&#xff0c;此时再点击运行按钮会弹出如下窗口&#xf…

Vue入门到关门之计算属性与监听属性

一、计算属性 1、什么是计算属性 计算属性是基于其它属性计算得出的属性&#xff0c;就像Python中的property&#xff0c;可以把方法/函数伪装成属性&#xff0c;在模板中可以像普通属性一样使用&#xff0c;但它们是基于响应式依赖进行缓存的。这意味着只有在依赖的响应式数…

Mysql 存在多条数据,按时间取最新的那一组数据

1、数据如下&#xff0c;获取每个用户最近的一次登录数据 思路1&#xff1a;order by group by 先根据UserIdLogInTime排序&#xff0c;再利用Group分组&#xff0c;即可得到每个User_Id的最新数据。 1 SELECT * FROM login_db l ORDER BY l.user_id, l.login_time DESC; 排…

基于车载点云数据的城市道路特征目标提取与三维重构

作者&#xff1a;邓宇彤&#xff0c;李峰&#xff0c;周思齐等 来源&#xff1a;《北京工业大学学报》 编辑&#xff1a;东岸因为一点人工一点智能公众号 基于车载点云数据的城市道路特征目标提取与三维重构本研究旨在弥补现有研究在处理复杂环境和大数据量上的不足&#xf…

MFC实现ini配置文件的读取

MFC实现 ini 配置文件的读取1 实现的功能&#xff1a;点击导入配置文件按钮可以在旁边编辑框中显示配置文件的路径&#xff0c;以及在下面的编辑框中显示配置文件的内容。 1. 显示配置文件内容的编辑框设置 对于显示配置文件内容的 Edit Contorl 编辑框的属性设置如下&#x…

绘唐3怎么联系团长299矩阵反推模块使用说明

反推配置说明看这里:团长https://qvfbz6lhqnd.feishu.cn/wiki/D3YLwmIzmivZ7BkDij6coVcbn7W MJ配置说明 如上图 选择公有云,即可体验

Linux计划任务书以及定时任务的编写

一、程序可以通过两种方式执行&#xff1a; 手动执行利用调度任务&#xff0c;依据一定的条件自动执行 自动执行可通过一下两个命令来实现: &#xff08;1&#xff09;At &#xff08;单一工作调度&#xff09; &#xff08;2&#xff09;Cron &#xff08;循环工作调度&a…

求三个字符数组最大者(C语言)

一、N-S流程图&#xff1b; 二、运行结果&#xff1b; 三、源代码&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h> # include <string.h>int main() {//初始化变量值&#xff1b;int i 0;char str[3][20];char string[20];//循环输入3个字符…