《C++第八周实验报告1-1(2)》----复数类中的运算符重载,用类的友元函数

  1. 【任务1】实现复数类中的运算符重载 
  2. 定义一个复数类重载运算符+、-、*、/,使之能用于复数的加减乘除。 
  3. (2)方案二:请用类的友元函数,而不是成员函数,完成上面提及的运算符的重载; 
  4. */  
  5. /* (程序头部注释开始) 
  6. * 程序的版权和版本声明部分 
  7. * Copyright (c) 2011, 烟台大学计算机学院学生  
  8. * All rights reserved. 
  9. * 文件名称:  Complex.cpp                             
  10. * 作    者:   计114-3 马琳     
  11. * 完成日期:    2012  年  4 月  《C++第八周实验报告1-1(2)》----复数类中的运算符重载,用类的友元函数_第1张图片11 日 
  12. * 版 本 号:       V 1.1 
  13.  
  14. * 对任务及求解方法的描述部分 
  15. * 输入描述: 实现复数类中的运算符重载 
  16. * 问题描述:定义一个复数类重载运算符+、-、*、/,使之能用于复数的加减乘除。 
  17.             (2)方案二:请用类的友元函数,而不是成员函数,完成上面提及的运算符的重载; 
  18. * 程序输出: +、-、*、/,对复数运算后的结果。 
  19. * 程序头部的注释结束 
  20. */  
  
#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;  
};  
void Complex::display()  
{  
    cout << "(" << real << "," << imag << "i)" << endl;  
}  
//下面定义友元函数   
Complex operator+ (Complex &c1, Complex &c2)  
{  
    return Complex(c1.real + c2.real, c1.imag + c2.imag);  
}  
Complex operator- (Complex &c1, Complex &c2)  
{  
    return Complex(c1.real - c2.real, c1.imag - c2.imag);  
}  
Complex operator* (Complex &c1, Complex &c2)  
{  
    Complex c;  
      
    c.real = c1.real*c2.real - c1.imag*c2.imag;  
    c.imag = c1.real*c2.imag + c1.imag*c2.real;  
      
    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.real*c2.imag + c1.imag*c2.real)/(c2.real*c2.real + c2.imag*c2.imag);  
      
    return c;  
}  
  
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();  
  
    system("pause");  
    return 0;  
}  


 

 

友元函数不同于成员函数,参数应设置为两个,因为他没有隐藏的THIS指针

你可能感兴趣的:(C++,c,System,Class,任务,iostream)