C++复数运算符重载练习

在学习了运算符重载后,知道了运算符重载的本质是一个特殊的成员或友元函数,重载后原意义没有失去,而是定义了相对类的一个新运算符。下面来做个运算符重载的练习:
在这里插入图片描述
先在复数类中声明好函数原型与复数私有变量

class Complex {
public:
	Complex(int a=0, int b=0) { n = a, d = b; }
	Complex operator =(Complex &);
	Complex operator ++();
	Complex operator ++(int);
	Complex operator --();
	Complex operator --(int);
	friend Complex operator +(const Complex &, const Complex &);
	friend Complex operator -(const Complex &, const Complex &);
	friend Complex operator *(const Complex &, const Complex &);
	friend Complex operator /(const Complex &, const Complex &);
	friend ostream & operator<<(ostream &, Complex &);
	friend istream & operator>>(istream & , Complex &);
	int getN() {
		return n;
	}
	int getD() {
		return d; 
	}
private:
	int n;
	int d;
};

再在对应cpp写好函数定义:

Complex Complex::operator =(Complex & a) {
	n = a.n; d = a.d;
	return *this;
}
Complex operator +(const Complex & a, const Complex & b) {
	int n, d;
	n = a.n + b.n;
	d = a.d + b.d;
	return Complex(n, d);
}
Complex operator -(const Complex & a, const Complex & b) {
	return Complex(a.n - b.n, a.d - b.d);
}
Complex operator *(const Complex & a, const Complex & b) {	
	return Complex((a.n * b.n) - (a. d * b.d), (a.n * b.d) + (a. d * b.n));
}
Complex operator /(const Complex & a, const Complex & b) {
	return Complex(((a.n * b.n) + (a.d * b.d)) / (b.n*b.n + b.d*b.d), (a.d * b.n - a.n*b.d) / (b.n*b.n + b.d*b.d));
}
ostream & operator<<(ostream & output, Complex & a) {
	output << a.getN() << "+" << a.getD() << "i" << endl;
	return output;
}
istream & operator>>(istream & input, Complex & a) {
	int n, d;
	input >> n;	input >> d;
	a = Complex(n, d);
	return input;
}
Complex Complex::operator ++() {
	n++; d++;
	return *this;
}
Complex Complex::operator ++(int) {
	Complex temp;
	temp.n = n++;
	temp.d = d++;
	return temp;
}
Complex Complex::operator --() {
	n--; d--;
	return *this;
}
Complex Complex::operator --(int) {
	Complex temp;
	temp.n = n--;
	temp.d = d--;
	return temp;
}

写段测试代码:

void main(){
	Complex a(1, 2);
	cin >> a;
	a++;
	cout << a;
	++a;
	cout << a;
	a = Complex(1);
	cout << a;
}

在这里插入图片描述

达成了练习的目的,目标达成!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值