(面对对象程序设计)实训2 运算符的重载

一、实验目的

学习掌握重定义与类有关的运算符。

在设计一个新的类时,其实是将一个新的数据类型引入到c++中,对于新的数据类型的操作需要重新定义,而不能直接应用一些系统预先定义好的操作符。

把握重载运算符的时机。

二、实验内容

生成一个表示复数的类FS。复数的实部sb和虚部xb作为其数据成员。提供成员函数disp()显示复数,重载“+”,“一”,“×”,“/”为FS类的成员函数,用来计算两个复数的和、差、积、商。
利用重载的运算符计算下列各式:
(8+3i)+(7-4i);
(9+3i)-(4+2i);
(4+6i)*(2+3i);
(7+4i)/(2+1i)。
 

#include<iostream>
using namespace std;
class FS{
	double sb,xb;
	public:
	FS(double a=0.0,double b=0.0)
	{
		sb=a;
		xb=b;
	}
	void disp()
	{
		cout<<"["<<sb<<"+"<<"("<<xb<<"*i"<<")"<<"]";
	}
	FS operator+(FS &);
	FS operator-(FS &);
	FS operator*(FS &);
	FS operator/(FS &);
};
FS FS::operator+(FS &f)
{
	FS g;
	g.sb=sb+f.sb;
	g.xb=xb+f.xb;
	return g;
}
FS FS::operator-(FS &f)
{
	FS g;
	g.sb=sb-f.sb;
	g.xb=xb-f.xb;
	return g;
}
FS FS::operator*(FS &f)
{
	FS g;
	g.sb=sb*f.sb-xb*f.xb;
	g.sb=sb*f.sb+xb*f.xb;
	return g;
}
FS FS::operator/(FS &f)
{
	FS g;
	g.sb=(sb*f.sb+xb*f.xb)/(f.sb*f.sb+f.xb*f.xb);
	g.xb=(xb*f.sb-sb*f.xb)/(f.sb*f.sb+f.xb*f.xb);
	return g;
}
int main()
{
	FS a1(8,3),a2(7,-4),b1(9,3),b2(4,2),c1(4,6),c2(2,3),d1(7,4),d2(2,1);
	FS q1,q2,q3,q4;
	q1=a1+a2;
	a1.disp();
	cout<<"+";
	a2.disp();
	cout<<"=";
	q1.disp();
	cout<<endl;
	q2=b1-b2;
	b1.disp();
	cout<<"-";
	b2.disp();
	cout<<"=";
	q2.disp();
	cout<<endl;
	q3=c1*c2;
	c1.disp();
	cout<<"*";
	c2.disp();
	cout<<"=";
	q3.disp();
	cout<<endl;
	q4=d1/d2;
	d1.disp();
	cout<<"/";
	d2.disp();
	cout<<"=";
	q4.disp();
	cout<<endl;
	return 0;
}

  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值