首页 > 其他分享 >面向对象 加法运算符重载

面向对象 加法运算符重载

时间:2024-10-20 12:19:05浏览次数:9  
标签:real 成员 image 运算符 面向对象 Complex 重载 rec other

//
// Created by 徐昌真 on 2024/10/18.
//
#include <iostream>
using namespace std;

//定义一个复数类
class Complex{
public:
    Complex(): real(0), image(0) {
    }
    Complex(int real,int image){  //这是一个传参构造函数 用于传入成员变量的值
        this->real = real;
        this->image = image;
    }
    Complex add(Complex &other){  //这是一个成员函数 实现复数相加 传入一个成员函数的地址 这里使用引用 效率更高 避免址传递的时候 又创建一个complex的成员 导致内存过多消耗
        Complex rec;  //初始化一个成员
        rec.real = this->real + other.real;  //用rec成员来接收相加的值
        rec.image = this->image + other.image;
        return rec;  //返回rec 避免c3不能接收值导致无法正常输出
    }

    Complex operator+(Complex &other){  //operator+运算符重载
        Complex rec;  //初始化一个成员
        rec.real = this->real + other.real;  //用rec成员来接收相加的值
        rec.image = this->image + other.image;
        return rec;  //返回rec 避免c3不能接收值导致无法正常输出
    }

    void Print(){
        cout << real << '+' << image << 'i' << endl;
    }

private:
    int real;
    int image;

};

int main() {
    Complex c1(1,2);
    Complex c2(2,3);
    Complex c3 = c2.add(c1);
    c3.Print();
    Complex d = c1 + c2;  //重载运算符 用d接收结果  c1是左操作数 c2是右操作数 c1 + c2相当于c1调用了和c2相加 c1.operator+(c2)
    d.Print();  //输出

    return 0;
}

输出

标签:real,成员,image,运算符,面向对象,Complex,重载,rec,other
From: https://blog.csdn.net/m0_63056769/article/details/143062799

相关文章

  • 面向对象综合训练
    练习1:文字版格斗游戏最原始的写法:Javabean类:importjava.util.Random;publicclassRole{privateintblood;privateStringname;publicRole(){}publicRole(intblood,Stringname){this.blood=blood;this.name......
  • Java的重载和主要内存区
    JAVA的重载​在Java中,重载(Overloading)是指在同一个类中可以定义多个同名的方法,但它们的参数列表必须不同。重载可以通过改变参数的数量、类型或者顺序来实现。重载提高了代码的可读性和灵活性。JAVA重载要满足的条件:在同一个类下:java的重载必须在同一个类之下方法名相同......
  • 【Java】Java面向对象与方法
    1.基本方法1.1.基本定义在Java中,方法即为函数,Java中的方法定义遵循下面的通用格式修饰符返回值方法名(形参列表){方法体}对于基本方法的定义,遵循下面的结构publicstatic返回类型方法名(形参列表){方法体}是否需要返回类型和形参列表需要看该......
  • 奇怪的错误:关于函数重载,头文件使用和新手避坑的小科普
    奇怪的错误:关于函数重载,头文件使用和新手避坑的小科普题目描述        个小球排成一排,现在有种不同颜色的油漆,给每个小球都涂色。如果相邻两个小球的颜色必须不同,那么共有多少种涂法?输入        一行,两个整数,。输出        一行,一个整数,为满......
  • P2-3与P2-4.【基本数据类型、运算符和表达式】第三节与第四节
    讲解视频:P2-3.【基本数据类型、运算符和表达式】第三节P2-4.【基本数据类型、运算符和表达式】第四节目录必备知识与理论任务实施必备知识与理论C语言中把除了控制语句和输入输出以外的几乎所有的基本操作都作为运算符处理。其运算符和表达式数量之多,在高级......
  • 深入理解拓展运算符与剩余运算符:功能、用法与区别
    目录深入理解拓展运算符与剩余运算符:功能、用法与区别一、拓展运算符(SpreadOperator)1、什么是拓展运算符?2、拓展运算符的作用3、拓展运算符的使用示例①数组展开与合并②对象展开与合并③函数调用时传递数组作为参数二、剩余运算符(RestOperator)1、什么是剩余运算符......
  • 面向对象(下)
    面向对象(下)1、继承继承概述:多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可。通过extends关键字可以实现类与类的继承class子类名extends父类名{}单独的这个类称为父类,基类或者超类;这多个类可以称为......
  • 面向对象(上)
    第四章面向对象(上)1、面向对象思想概述1、面向对象与面向过程的区别?面向过程的思想:代表语言C语言功能开发中的每一步都是自己参与的面向对象的思想:代表语言java语言指的是不断地创建对象,指挥对象事情过程2、举例现实生活中的例子:接水:面向过程的思想:自己拿......
  • Java面向对象学习1019-1
    Java面向对象基础1:  面向对象编程是什么,和面向过程有什么区别?  面向对象编程OOP(ObjectOrientedPrograming)是一种程序设计方法,其本质是模仿人的思维来解决问题,把客观世界的实体抽象为对象。不同于面向过程编程POP(ProcedureOrientedPrograming)以过程为中心,关注......
  • 运算符
    一、赋值运算符/*赋值运算符:=+=-=*=/=%=*/publicclassFuZhiDemo1{publicstaticvoidmain(String[]args){inta=3;//a+=4;//System.out.println(a);a-=5;System.out.println(a);}}......