极其简单的复数类,只是不想再推演一遍复数四则运算

class Complex
{
private:
    double real_ = 0.0;
    double imag_ = 0.0;
public:
    Complex() = default;
    explicit Complex(double real, double imag):
        real_(real), imag_(imag)
    {}

    Complex(const Complex& other)
    {
        real_ = other.real_;
        imag_ = other.imag_;
    }

    Complex(Complex&& other)
    {
        real_ = std::move(other.real_);
        imag_ = std::move(other.imag_);
    }

    Complex& operator=(const Complex& other)
    {
        real_ = other.real_;
        imag_ = other.imag_;
        return *this;
    }

    Complex& operator=(Complex&& other)
    {
        real_ = std::move(other.real_);
        imag_ = std::move(other.imag_);
        return *this;
    }

    double real() const
    {
        return real_;
    }

    double imag() const
    {
        return imag_;
    }

    void setReal(double newReal)
    {
        real_ = newReal;
    }

    void setImag(double newImag)
    {
        imag_ = newImag;
    }
};

Complex operator+(const Complex& c1, const Complex& c2)
{
    return Complex((c1.real() + c2.real()), (c1.imag() + c2.imag()));
}
Complex operator-(const Complex& c1, const Complex& c2)
{
    return Complex((c1.real() - c2.real()), (c1.imag() - c2.imag()));
}
Complex operator*(const Complex& c1, const Complex& c2)
{
    double const real = c1.real() * c2.real() - c1.imag() * c2.imag();
    double const imag = c1.real() * c2.imag() + c1.imag() * c2.real();
    return Complex(real, imag);
}
Complex operator/(const Complex& c1, const Complex& c2)
{
    const double denominator = c2.real() * c2.real() + c2.imag() * c2.imag();
    Complex tmpComplex(c2.real(), -c2.imag());
    Complex&& result = c1 * tmpComplex;
    result.setReal(result.real() / denominator);
    result.setImag(result.imag() / denominator);
    return result;
}
void print(const Complex& complex)
{
    std::printf("(%.1f, %.1f)", complex.real(), complex.imag());
}
时间: 2024-10-29 19:06:18

极其简单的复数类,只是不想再推演一遍复数四则运算的相关文章

【C++】 复数类操作

复数的概念我们高中已经接触过,包含是实部和虚部, For example:2i + 3J:实部和虚部值可为整型,亦可浮点型,那在此实现一下简单的复数类的操作 代码如下: class Complex { public:     Complex(double real,double imag)     {         _real = real;         _imag = imag;     }     Complex(const Complex& c)     {         _rea

【C++】复数类的实现

复数类的实现: 这个是以前学习的补全,记录一下吧. 复数类本身概念是具备一个实部_real和虚部_image,然后实现复数的加减乘除,自加自减还有等于符号的重载.算是一个基本的联系吧. 废话不多说,看看代码,很简单. Complex_class.h #include <iostream> #include <math.h> using namespace std; class Complex { private: double _real; double _imag; public

侯捷《C++面向对象开发》——动手实现自己的复数类

前言 最近在看侯捷的一套课程<C++面向对象开发>,刚看完第一节introduction之后就被疯狂圈粉.感觉侯捷所提及所重视的部分也正是我一知半解的知识盲区,我之前也写过一些C++面向对象的程序,不过正如侯捷所说,我还仅仅停留于Object-based层面,写程序时总是在想如何封装好一个类,而不是Object-oriented强调类与类之间关系的设计. 这门课程分为两部分,第一部分讲Object-based,第二部分讲Object-oriented:第一部分又分为两部分:带指针的类的封装和不

复数类的设计问题

问题描述:设计一个复数类,要求 (1)在复数内部用双精度浮点数定义其实部和虚部 (2)实现3个构造函数:第1个构造函数没有参数: 第2个构造函数将双精度浮点数赋给复数的实部,虚部为0: 第3个构造函数将两个双精度浮点数分别赋给复数的实部和虚部. (3)编写获取和修改复数的实部和虚部的成员函数 (4)编写实现复数的减法.乘法运算的成员函数 涉及教材:<数据结构--Java语言描述(第2版)> 清华大学出版社 涉及变量:plurality_0112 : 我自定义的复数类 real:double型,

C++--操作符重载 复数类

一.操作符重载 Q:下面的复数解决方案是否可行? class Complex { public: int a; int b; }; int main() { Complex c1={1,2}; Complex c2={3,4}; Complex c3=c1+c2; return 0; } 该段代码想要实现的是将两个复数类进行相加得出第三个类代码实现的运行结果由上面的结果图可以得知,出现的错误是无法匹配+号操作符的操作,同时出现 的潜在问题是a与b是public成员,在实际的操作中应将a与b设置为

分享一个简单的简单的SQLHelper类

分享一个简单的简单的SQLHelper类,代码如下: 1 class SqlHelper 2 { 3 public static readonly string connstr = 4 ConfigurationManager.ConnectionStrings["dbConnStr"].ConnectionString; 5 6 public static int ExecuteNonQuery(string cmdText, 7 params SqlParameter[] para

Hibernate系列(二):简单编写HibernateUtil类来优化性能

相对于Hibernate系列(一)中的代码编写HibernateUtil类以提高程序的运行速度 首先,仍然要写一个javabean(User.java): package cn.itcast.hibernate.domain; import java.util.Date; public class User { private int id; private String name; private Date birthday; public int getId() { return id; }

C++习题 复数类--重载运算符+,-,*,/

Description 定义一个复数类Complex,重载运算符"+","-","*","/",使之能用于复数的加.减.乘.除.运算符重载函数作为Complex类的成员函数.编写程序,分别求两个复数之和.差.积和商. Input 两个复数 Output 两个复数之和.差.积和商 Sample Input 3 4 5 -10 Sample Output c1+c2=(8.00,-6.00i) c1-c2=(-2.00,14.00

几个数据库的小案例(二):极其简单的省市联动

总用有两个文件(frmMain.cs SqlHelper.cs) //frmMain.cs//作者:Meusing System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace 省市联动