使用友元函数来完成复数类的运算符重载

原创 2016年05月31日 21:18:14

/*

*Copyright   (c)  2016,烟台大学计算机学院

*All rights reserved.

*文件名称:test.cpp

*作者: 武聪

*完成日期:2016年5月31日

*版本号: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+(Complex &c1,Complex &c2);
    friend Complex operator-(Complex &c1,Complex &c2);
    friend Complex operator*(Complex &c1,Complex &c2);
    friend Complex operator/(Complex &c1,Complex &c2);
    void display();
private:
    double real;
    double imag;
};
Complex operator+ (Complex &c1,Complex &c2)
{
    Complex c;
    c.real=c1.real+c2.real;
    c.imag=c1.imag+c2.imag;
    return c;
}
Complex operator-(Complex &c1,Complex &c2)
{
    Complex c;
    c.real=c1.real-c2.real;
    c.imag=c1.imag-c2.imag;
    return c;
}
Complex operator*(Complex &c1,Complex &c2)
{
    Complex c;
    c.real=c1.real*c2.real-c1.imag*c2.imag;
    c.imag=c1.imag*c2.real+c1.real*c2.imag;
    return c;
}
Complex operator/(Complex &c1,Complex &c2)
{
    Complex c;
    c.real=(c1.real*c2.real+c1.imag*c2.imag)/(c2.real*c2.real+c2.imag*c2.imag);
    c.imag=(c1.imag*c2.real-c1.real*c2.imag)/(c2.real*c2.real+c2.imag*c2.imag);
    return c;
}
void Complex::display()
{
    cout<<"("<<real<<","<<imag<<"i)"<<endl;
}
int main()
{
    Complex c1(3,4),c2(5,-10),c3;
    cout<<"c1=";
    c1.display();
    cout<<"c2=";
    c2.display();
    c3=c1+c2;
    cout<<"c1+c2=";
    c3.display();
    c3=c1-c2;
    cout<<"c1-c2=";
    c3.display();
    c3=c1*c2;
    cout<<"c1*c2=";
    c3.display();
    c3=c1/c2;
    cout<<"c1/c2=";
    c3.display();
    return 0;
}
运行结果:

知识点总结:

友元函数的使用

学习心得:

努力

实现复数类中的友元函数运算符重载

/* * 程序的版权和版本声明部分 * Copyright (c)2013, 烟台大学计算机学院学生 * All rightsreserved. * 文件名称:a.cpp * 作 者:...
  • u012369559
  • u012369559
  • 2014年04月16日 12:18
  • 688

浅谈C++中用友元函数的方法实现复合运算符(+=等)的重载方法

在写到重载复合运算符的题目时,用成员函数的方法比较容易实现。但是题目中还要求使用友元函数的方法实现,于是就卡在这里了。调试了数次后未果,于是上网翻阅资料,发现网上关于使用友元函数的方法实现复合运算符的...
  • toky2012
  • toky2012
  • 2014年11月25日 19:25
  • 921

C++实现输入输出运算符重载、友元函数和成员函数实现复数类Complex

题目要求如下: 1) 基本的构造函数; 2) 成员运算符+、-实现复数的加减运算; 3) 友元运算符+、-实现更合理的加减运算; 4) 运算符实现复数类的输出输入。...
  • rl529014
  • rl529014
  • 2015年11月29日 20:48
  • 3461

运算符重载函数作为类成员函数与友元函数的区别

运算符重载函数作为类成员函数与友元函数
  • Sharp_Zjf
  • Sharp_Zjf
  • 2016年03月16日 10:49
  • 1965

《C++第八周实验报告1-1(1)》---复数类中的运算符重载用类的成员函数完成

/* 【任务1】实现复数类中的运算符重载 定义一个复数类重载运算符+、-、*、/,使之能用于复数的加减乘除。 (1)方案一:请用类的成员函数完成运算符的重载; */ /* (程序头部注释开始) * 程...
  • w695050167
  • w695050167
  • 2012年04月09日 23:22
  • 2223

C++运算符重载(友元函数方式)

我们知道,C++中的运算符重载有两种形式:①重载为类的成员函数(见C++运算符重载(成员函数方式)),②重载为类的友元函数。 当重载友元函数时,将没有隐含的参数this指针。这样,对双目运算符,友元...
  • GarfieldEr007
  • GarfieldEr007
  • 2015年07月10日 11:27
  • 1686

C++实践参考——复数类中的运算符重载

返回:贺老师课程教学链接【项目1-实现复数类中的运算符重载】(1)请用类的成员函数,定义复数类重载运算符+、-、*、/,使之能用于复数的加减乘除class Complex { public: ...
  • sxhelijian
  • sxhelijian
  • 2015年04月21日 18:33
  • 2665

复数类的运算符重载(友元函数)

/*   * 程序的版权和版本声明部分   * Copyright (c)2012, 烟台大学计算机学院学生   * All rightsreserved.   * 文件名称: 1.cpp  ...
  • sxt15253294227
  • sxt15253294227
  • 2013年04月22日 18:38
  • 511

c++运算符重载和友元函数

1.运算符重载:例如+本来是用于两个整数或者两个浮点数进行相加的,如果我将+重载之后,可将+用于时间对象的相加,比如一个时间对象为1小时50分,一个时间对象为2小时30分,则这样两个时间对象通过重载的...
  • liuwei271551048
  • liuwei271551048
  • 2014年04月20日 21:03
  • 980

复数类中的运算符重载—友元函数

问题及代码: /* * Copyright (c) 2014, 烟台大学计算机学院 * All rights reserved. * 文件名称:test.cpp * 作 者:李盈盈 ...
  • LY_624
  • LY_624
  • 2015年05月07日 13:58
  • 303
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用友元函数来完成复数类的运算符重载
举报原因:
原因补充:

(最多只允许输入30个字)