C++重载操作符之二(输入>>,输出<<,以及乘法)

本文介绍如何在C++中使用类实现复数的乘法运算,并通过友元函数实现输入输出操作。通过实例演示复数类的构造、乘法重载和输入输出重载,旨在提升对面向对象编程和C++特性的理解。

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


#include<iostream>
using namespace std;

class Rational
{
private:
	int numerator;
	int denominator;
public:
	Rational(int n, int d) :numerator(n), denominator(d){}
	//乘法操作符既可以使用成员重载又可以使用友元重载的
	/*
	friend Rational operator *(const Rational &l, const Rational &r)
	{
		return Rational((l.numerator*r.numerator) , (l.denominator*r.denominator));
	}
	*/
	const Rational operator *(const Rational &r)
	{
		return Rational((this->numerator*r.numerator), (this->denominator*r.denominator));
	}
	//输入输出的操作符只能使用友元重载
	friend ostream & operator<<(ostream &o, Rational & r)
	{
		o << r.numerator << "/" << r.denominator << endl;
		return o;
	}
	//修改了对象r,故用const修饰是错误的,会导致重载失败
	/*
	friend istream & operator>>(istream &i, const Rational & r)
	{
		char c;
		i >> r.numerator >> c >> r.denominator;
		return i;
	}
	*/
	
	friend istream &operator>>(istream &i, Rational &r)
	{ 
		char c; 
		i >> r.numerator >> c >> r.denominator; 
		return i; 
	}
}; 
int main()
{ 
	Rational r1(1, 2);
	Rational r2(3, 5);
	Rational res = r1*r2;
	cout << "r1:" << r1 << "r2:" << r2;
	cout << "r1*r2=" << res << endl;
	cin >> r1 >> r2; 
	cout << "r1:" << r1 << "r2:" << r2; 
	res = r1*r2; 
	cout << res << endl; 
	return 0; 
}




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值