第八周 项目一 (3)

(3)定义一个定义完整的类(是可以当作独立的产品发布,成为众多项目中的“基础工程”)。这样的类在(2)的基础上,扩展+、-、*、/运算符的功能,使之能与double型数据进行运算。设Complex c; double d; c+d和d+c的结果为“将d视为实部为d的复数同c相加”,其他-、*、/运算符类似。

/*
*Copyright (c)2014,烟台大学计算机与控制工程学院
*All rights reserved.
*dood luck
*文件名称:d.cpp
*作    者:张旺华
*完成日期:2015年4月29日
*版 本 号:v1.0
*
*/
#include<iostream>
using namespace std;
class Complex
{
public:
    Complex()
    {
        real=0;
        imag=0;
    }
    Complex(double r,double i)
    {
        real=r;
        imag=i;
    }
    friend Complex operator+(const Complex &c1,const Complex &c2);
    friend Complex operator-(const Complex &c1,const Complex &c2);
    friend Complex operator*(const Complex &c1,const Complex &c2);
    friend Complex operator/(const Complex &c1,const Complex &c2);
    friend Complex operator+(const double &b,const Complex &c2);
    friend Complex operator-(const double &b,const Complex &c2);
    friend Complex operator*(const double &b,const Complex &c2);
    friend Complex operator/(const double &b,const Complex &c2);
    friend Complex operator+(const Complex &c1,const double &b);
    friend Complex operator-(const Complex &c1,const double &b);
    friend Complex operator*(const Complex &c1,const double &b);
    friend Complex operator/(const Complex &c1,const double &b);
    void display();
private:
    double real;
    double imag;
};
//下面定义成员函数
Complex operator+(const double &b,const Complex &c2)
{
    Complex c(b,0);
    return c+c2;
}
Complex operator-(const double &b,const Complex &c2)
{
    Complex c(b,0);
    return c-c2;
}
Complex operator*(const double &b,const Complex &c2)
{
    Complex c(b,0);
    return c*c2;
}
Complex operator/(const double &b,const Complex &c2)
{
    Complex c(b,0);
    return c/c2;
}
Complex operator+(const Complex &c1,const double &b)
{
    Complex c(b,0);
    return c1+c;
}
Complex operator-(const Complex &c1,const double &b)
{
    Complex c(b,0);
    return c1-c;
}
Complex operator*(const Complex &c1,const double &b)
{
    Complex c(b,0);
    return c1*c;
}
Complex operator/(const Complex &c1,const double &b)
{
    Complex c(b,0);
    return c1/c;
}
void Complex ::display()
{
    cout<<"("<<real<<","<<imag<<")"<<endl;
}
Complex operator+(const Complex &c1,const Complex &c2)
{
    Complex a;
    a.real=c1.real+c2.real;
    a.imag=c1.imag+c2.imag;
    return a;
}
Complex operator-(const Complex &c1,const Complex &c2)
{
    Complex a;
    a.real=c1.real-c2.real;
    a.imag=c1.imag-c2.imag;
    return a;
}
Complex operator*(const Complex &c1,const Complex &c2)
{
    Complex a;
    a.real=c1.real*c2.real+c1.imag*c2.imag;
    a.imag=c1.imag+c2.real+c1.real*c2.imag;
    return a;
}
Complex operator/(const Complex &c1,const Complex &c2)
{
    Complex a;
    double k;
    k=1/(c2.real*c2.real+c2.imag*c2.imag);
    a.real=(c1.real*c2.real+c1.imag*c2.imag)*k;
    a.imag=(c1.imag+c2.real-c1.real*c2.imag)*k;
    return a;
}

//下面定义用于测试的main()函数
int main()
{
     Complex c1(3,4),c2(5,-10),c3;
    double d=11;
    cout<<"c1=";
    c1.display();
    cout<<"c2=";
    c2.display();
    cout<<"d="<<d<<endl<<endl;
    cout<<"下面是重载运算符的计算结果: "<<endl;
    c3=c1+c2;
    cout<<"c1+c2=";
    c3.display();
    cout<<"c1+d=";
    (c1+d).display();
    cout<<"d+c1=";
    (d+c1).display();
    c3=c1-c2;
    cout<<"c1-c2=";
    c3.display();
    cout<<"c1-d=";
    (c1-d).display();
    cout<<"d-c1=";
    (d-c1).display();
    c3=c1*c2;
    cout<<"c1*c2=";
    c3.display();
    cout<<"c1*d=";
    (c1*d).display();
    cout<<"d*c1=";
    (d*c1).display();
    c3=c1/c2;
    cout<<"c1/c2=";
    c3.display();
    cout<<"c1/d=";
    (c1/d).display();
    cout<<"d/c1=";
    (d/c1).display();
    return 0;
}

运行结果:

学习心得:

一直想找出一种比较简单的来实现重载,一直找不到,就先用这种方法吧,随着后来的学习会知道的。

时间: 2024-10-07 07:10:41

第八周 项目一 (3)的相关文章

第八周项目小结

小结: 第八周了,是时候对自己的项目流程做一个简单的阐述和总结了. 我负责数据库的编写和java与数据库的连接JDBC这块,用MVC三层架构写图书馆管理系统,模型层可直接向数据库传递SQL语句,控制层调用模型层,视图层调用控制层,展示最后结果,用户可在视图层输入信息,视图层将信息传给控制层,控制层通过控制模型层向数据库传递SQL语句来对数据库中的信息增删改查,需要输出结果的操作,在数据库获得信息后,就可依次通过模型层,控制层最后呈现在视图层上. 已经能实现基本的增删改查功能,前两天还只是停留在程

第八周 项目三 (1)分数类中的运算符重载

[项目3-分数类中的运算符重载] (1)实现分数类中的运算符重载,在分数类中可以完成分数的加减乘除(运算后再化简).比较(6种关系)的运算.可以在第4周分数类代码的基础上开始工作. [cpp] view plaincopyprint? class CFraction { private: int nume;  // 分子 int deno;  // 分母 public: //构造函数及运算符重载的函数声明 }; //重载函数的实现及用于测试的main()函数 /* *Copyright (c)2

第八周--项目总结

我们团队做的是购物网站,网页较为全面,包含了注册登录页面,主页,查看商品详情网页,购物车页面等,遗憾的是由于技术原因没有连接后台数据库.因而相关的功能无法实现.虽然结果不是很满意.但通过这次项目也学到了不少东西.了解了更多web前端技术,更加明白了团队合作与分工的重要性.同时清楚了一个项目的开发流程,我们整个项目的实施全是按照标准流程走下去的,第一阶段:需求分析阶段,第二阶段:项目分析设计阶段,第三阶段:编码阶段,第四阶段:测试阶段.经过这四个阶段,体会了一个项目从需求分析到测试完成的整个过程,

第八周项目3-分数类中的运算符重载

实现分数类中的运算符重载,在分数类中可以完成分数的加减乘除(运算后再化简).比较(6种关系)的运算.可以在第4周分数类代码的基础上开始工作. /* * Copyright (c) 2015,烟台大学计算机学院 * All right reserved. * 作者:邵帅 * 文件:Demo.cpp * 完成时间:2015年04月29日 * 版本号:v1.0 */ #include <iostream> using namespace std; class CFraction { private:

第八周项目 二 【项目2-Time类中的运算符重载】

[项目2-Time类中的运算符重载] 实现Time类中的运算符重载. [cpp] view plaincopyprint? class CTime { private: unsigned short int hour;    // 时 unsigned short int minute;  // 分 unsigned short int second;  // 秒 public: CTime(int h=0,int m=0,int s=0); void setTime(int h,int m,i

第八周项目三-分数类中的运算符重载

实现分数类中的运算符重载,在分数类中可以完成分数的加减乘除(运算后再化简).比较(6种关系)的运算.可以在第4周分数类代码的基础上开始工作. /* * Copyright (c) 2015,烟台大学计算机学院 * All right reserved. * 作者:赵嵩 * 文件:Demo.cpp * 完成时间:2015年05月16日 * 版本号:v1.0 */ #include <iostream> using namespace std; class CFraction { private:

第八周 项目一-复数类中的运算符重载(3)完整产品

定义一个定义完整的类(是可以当作独立的产品发布,成为众多项目中的"基础工程").这样的类在(2)的基础上,扩展+.-.*./运算符的功能,使之能与double型数据进行运算.设Complex c; double d; c+d和d+c的结果为"将d视为实部为d的复数同c相加",其他-.*./运算符类似 /* * Copyright (c) 2015, 烟台大学计算机学院 * All rights reserved. * 文件名称:test.cpp * 作 者:冷基栋

第八周项目4-String类的构造

写一个能处理字符串的类. #include <iostream> #include <Cstring> using namespace std; class String { public: String( ); //默认构造函数 String(const char *s); String(String &str); //构造函数 ~String(); void display( ); friend String operator + (String &s1,Str

第八周项目1-实现复数类中的运算符重载

(1)请用类的成员函数,定义复数类重载运算符+.-.*./,使之能用于复数的加减乘除. /* * Copyright (c) 2015,烟台大学计算机学院 * All right reserved. * 作者:邵帅 * 文件:Demo.cpp * 完成时间:2015年04月29日 * 版本号:v1.0 */ #include <iostream> using namespace std; class Complex { public: Complex(){real=0;imag=0;} Com