一个超简单C++例子实现:转换构造函数,类型转换函数,重载双目运算符+,重载流运算符<<,>>

前言

本文以对复数类型进行运算为例

一、实现的东西

1.定义一个Complex类(复数的英文单词),并用构造函数初始化;
2.对输入流">>“运算符用于Complex,输入的重载;
3.对输出流”<<“运算符用于Complex,输出的重载,使之能用输入,输出流符号实现直接对一个Complex 类型的输入,输出;
4.对运算符”+"重载,使能用于Complex型数据的运算;
5.将一个double类型数据转换为Complex类的转换构造函数;
6.将Complex类型数据转换为double类型的类型转化函数;
7.在main函数对Complex类数据和double型数据混合运算;

二、实例

1.完整代码

代码:

#include<iostream>
using namespace std;
/*
编写一个程序,处理一个复数与一个double数相加,结果存放在一个double型变量的中,输出
d1,再以复数形式输出这个值,定义Complex类,在成员函数中包括重载类型转换运算符
operator double(){return real;}

*/
class Complex {//定义Complex类
public:
	Complex() { real = 0; imge = 0; }//无参构造函数
	Complex(double r,double i):real(r),imge(i){}//有参构造函数

	friend ostream& operator << (ostream&, Complex&);//因为cout是iostream内的内容 所以要引用它,必须为ostream& operator <<  
													//且只能为友元函数
	friend istream& operator >> (istream&, Complex&);//对输入流>>的重载

	operator double() { return real; }//类型转换函数,返回实部值
	Complex(double r) { real = r; imge = 0; }//转换构造函数,将输入值转为Complex的实部值

	friend Complex operator + (Complex &,Complex &);//对+的重载

private:
	double real;//复数实部
	double imge;//虚部
};


int main() {
	Complex c1(1, 2), c2(2, 4), c3,c4;
	double d1;
	
	d1 = c1 + 2.5;//d1是double,将double和Complex,相加
	cout << d1 << endl;//输出d1的值

	c3 = c1 + Complex(2.5);//c3是Complex,将doublex转换为Complex型,相加,此时用到了,对Complex重载的+
	cout << c3;

	//输入c4
	cin >> c4;
	//输出c4
	cout << c4;

	return 0;
}

ostream& operator <<(ostream& output, Complex& c) {//输出流<<的重载

	if (c.imge >= 0)	output << "(" << c.real << "+" << c.imge << "i)" << endl;//使输出是这个形式:(3+4i)

	else            output << "(" << c.real << "" << c.imge << "i)" << endl;//虚部是负数

	return output;//返回输出流,让后面可以继续用>>输出
}
istream& operator >>(istream& cin, Complex& c) {//重载输入流>>
	
	cin >> c.real >> c.imge;//输入实部和虚部
	return cin;//返回输入流
}

Complex operator +(Complex &c1,Complex &c2) {//对+进行重载使能适用于Complex的加减
	return Complex(c1.real + c2.real, c1.imge + c2.imge);//返回相加后的值
}

2.实验结果

在这里插入图片描是述


总结

如果对你有用,希望可以点个赞在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值