第九周实验报告(任务一)【Complex类中《和》运算符的重载】

本文介绍了一个复数类Complex的设计与实现,包括复数的基本运算如加、减、乘、除等操作的重载方法,并通过友元函数实现了复数的输入输出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/* (程序头部注释开始)

* 程序的版权和版本声明部分

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

* All rights reserved.

* 文件名称:复数类

* 作 者: 张培培

* 完成日期: 2012年 04月 16日

* 版 本 号:

* 对任务及求解方法的描述部分

* 输入描述:

* 问题描述: 定义Complex类中的《和》运算符的重载,实现输入和输出

* 程序输出:

* 程序头部的注释结束*/

#include<iostream>   
using namespace std;  
class Complex  
{  
public:  
    Complex(){real = 0;imag = 0;}  
    Complex(double r,double i){real = r;imag = i;}  
    Complex operator + (Complex & c2);  
    Complex operator - (Complex & c2);  
    Complex operator * (Complex & c2);  
    Complex operator / (Complex & c2);  
    friend ostream& operator << (ostream&,Complex&);//声明运算符“<<”的重载函数
	friend istream& operator >> (istream&,Complex&);//声明运算符“>>”的重载函数
private:  
    double real;  
    double imag;  
};  

//下面定义成员函数   
//复数相加
Complex Complex::operator + (Complex &c2)  
{  
	return Complex(real + c2.real,imag + c2.imag);  
}  
//复数相减
Complex Complex::operator - (Complex &c2)  
{  
	return Complex(real - c2.real,imag - c2.imag);  
}  
//复数相乘
Complex Complex::operator * (Complex &c2)  
{  
	return Complex(real * c2.real - imag * c2.imag,imag * c2.real + real * c2.imag);  
}  
//复数相除 
Complex Complex::operator / (Complex &c2)  
{  
	return Complex((real*c2.real+imag*c2.imag)/(c2.real*c2.real+c2.imag*c2.imag),   
		(imag*c2.real-real*c2.imag)/(c2.real*c2.real+c2.imag*c2.imag));    
	
}  

//定义运算符“<<”的重载函数函数  
ostream& operator << (ostream& output,Complex& c)   
{  
    output << "(" << c.real << "," << c.imag << "i)" << endl;  
    return output;  
}

//声明运算符“>>”的重载函数
istream& operator >> (istream& input ,Complex& c)
{
	cout<<"input real part and imaginary part of complex number:";
	input>>c.real>>c.imag;
	return input;
}

void main()  
{  
	Complex c1,c2,c3;  
	cin>>c1>>c2;
	cout << "c1 = "<<c1;     
	cout << "c2 = "<<c2;        
	c3 = c1 + c2;  
	cout << "c1 + c2 = ";  
	cout << c3;  
	c3 = c1 - c2;  
	cout << "c1 - c2 = ";  
	cout << c3;  
	c3 = c1 * c2;   
	cout << "c1 * c2 = ";  
	cout << c3;  
	c3 = c1 / c2;  
	cout << "c1 / c2 = ";  
	cout << c3;  
	system("pause");  
}   


上机感言:使用流插入运算符和流提取运算符额的重载后,程序的可读性会更好;而且,流插入运算符和流提取运算符额的重载只能使用友元函数;

                    定义流插入运算符和流提取运算符额的重载时要注意实参与形参之间的传递关系。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值