实现复数的现实输出及其运算

本文介绍了如何在C++中通过成员运算符重载实现复数的相加和自增功能。首先展示了如何重载+运算符进行复数相加,接着讨论了前置自增运算符++的重载方法。文章强调了前置和后置自增运算符的区别,并提供了相应代码示例。
摘要由CSDN通过智能技术生成

实现复数的现实输出及其运算;

一,用成员运算符重载函数实现复数相加

首先:我们先理理思路,要用成员运算符,对复数进行运算得对其相应的运算符进行重载,对运算符重载的一般格式如下:
函数类型 operator 运算符名称(形参表)
{对运算符的重载处理}

例如 在这里插入图片描述
我们想对"+"用于Y类的复数的加法运算,函数原型是这样的:
Y operator +(Y &c1,Y &c2);
分析完,请大家坐好扶稳,那我们就立马开始上机操作:在这里插入图片描述

#include<iostream>
using namespace std;
class Y											//声明一个Y类
{public:										//定义公有成员
	Y(){uio=0;dfg=0;}							//声明一个无参数的构造函数Y
	Y(double u,double d):uio(u),dfg(d){}		//定义一个带参数的构造函数,并用参数初始化表对数
												//据成员进行初始化
	Y operator +(Y &c2);						//声明重载运算符"+"的函数
	void qwe();									//定义一个成员函数
private:										
	double uio;									//定义名为uio的私有数据成员
	double dfg;									//定义名为dfg的私有数据成员
};
Y Y::operator+(Y &c2)							//对重载运算符"+"的函数进行定义
{
	Y c;										//建立一个临时Y类的对象c
	c.uio=uio+c2.uio;							//实现对两个复数的实部相加
	c.dfg=dfg+c2.dfg;							//实现对两个复数的虚部相加
	return(c);									//返回c的值
}
void Y::qwe()									//对函数qwe进行类外定义
{
	cout<<uio;									//输出数据"uio"
	if(dfg>0)									//对dfg进行判断
		cout<<"+"<<dfg<<"i"<<endl;				//输出dfg的值
}
int main()
{Y c1(1,2),c2(4,5),c3;							//声明Y类的对象c1,c2,c3,并对c1,c2传值
	c3=c1+c2;									//将运算符"+"用于复数的计算
	c3.qwe();									//调用对象c3的成员函数qwe,输出c3的值
	return 0;
}

到此程序就搞完了,大家都又帅又聪明应该都能看懂吧,在这里插入图片描述
我在这里啰嗦一下,大家应该会有疑问,为啥我在写程序之前写的对运算符重载的一般格式为:
Y operator +(Y &c1,Y &c2);,而我在程序中写的却是这样 Y operator +(Y &c2);对比之后,大家应该发现后者比前者少了个参数,这是因为在main函数中的"c3=c1+c2"被C++编译器解释为了"c3=c1.operator+(c2)",从而表示以c2为实参调用c1的运算符重载函数"opreator+“对两复数进行相加。
有些同学可能在自己不看源程序的情况自己敲了一,从而下漏写了"Y(){uio=0;dfg=0;}”(在类中的第三行),哦豁,程序报错了,发生这个的原因是对象c3没有进行传值,所以就需要一个不含参数的构造函数,缺少了不含参数的构造函数程序就报错
在这里插入图片描述
不过问题不大,以后有我带大家长知识,因为我已经燃起来了。
在这里插入图片描述

二,用成员运算符重载函数实现复数自增

来大家先来审一下题,“实现复数自增"这不就是我们第一题的重载”+“改为重载”++"嘛,说着确实有点小简单,大家可以先去敲一下,(此处等待十分钟)那我们分析完成马上上机操作:

#include <iostream>
using namespace std;
class Y											//声明一个Y类
{public:				
	Y(){sb=0;xb=0;}								//声明一个无参数的构造函数Y
	Y(double s,double x):sb(s),xb(x){}			//定义一个带参数的构造函数,并用参数初始化表对数
												//据成员进行初始化
	Y operator++()								//声明重载前置运算符"++"的函数对重载运算符"+"的函
												//数进行定义
	{	++sb;									
		++xb;
		return *this;							//返回自加后的当前对象
	}
	void wer()									//定义一个成员函数并对函数wer进行定义
	{
		cout<<sb;
		if(xb>0)
		cout<<"+"<<xb<<"i"<<endl;
		if(xb<0)
		cout<<xb<<"i"<<endl;
	}
private:
	double sb;
	double xb;
};
int main()
{	Y c1(1,2);										//定义Y类的c1对象
	++c1;											//让c1自加
	c1.wer();										//调用对象c3的成员函数qwe,输出c3的值
	return 0;
}

到这里呢,程序就写完了但我们的学习还没有结束噢,补充几个问题,请大家记好哟:
在这里插入图片描述
在重载单目运算符"++“”–"需要注意区分它们是前置运算符还是后置运算符,因为二者的作用是不相同的,并且它们的表达形式也不相同,我写了给大家对比区分一下,首先是前置自加运算符的表达形式: Y operator++(); 然后是后置自加运算符 **Y operator++(int);**大家可以对比了记一下,有同学可能会问后置的多了个int型的参数有什么用?它的作用只是为了与前置自增运算符有所区别,此外就啥作用。 当然我上面所写的程序是前置自增运算符,大家可以类比着去写一下后置自增运算符。
请大家注意前置自增运算符“++”和 后置自增运算符“++”作用的区别。前者是先自加返回的是修改后的对象本身。后者返回的是自加前的对象 然后对象自加。
今天的学习就到这吧,但我深知各位都缺钱:
在这里插入图片描述

那我就祝各位帅哥美女越来越有钱,我们下次再见。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不熙汉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值