C++快速入门---重载《操作符(19)
重载的含义是可以用相同的名字去实现不同的功能:输入参数方面有所差异就不会有问题。
下面是一个operator << ()函数的原型:
std::ostream& operator<<(std::ostream &os, Rational f);
第一个输入参数os是将要向它写数据的那个流,它是以“引用传递”方式传递的。
第二个输入参数是打算写到那个流里的数据值,不同的operatpr<<()重载函数就是因为这个输入参数才相互区别的。
代码如下:
在调用main函数时,“<<f1” 是调用本代码的 “<<重载函数”,而 “<<"+"” 它是调用本来的 "<<重载函数"。
#include <iostream>
#include <string>
#include <stdlib.h>
class Rational
{
public:
Rational(int num, int denom); //num = 分子,denom = 分母
Rational operator+(Rational rhs); //rhs == right hand side
Rational operator-(Rational rhs);
Rational operator*(Rational rhs);
Rational operator/(Rational rhs);
private:
void normalize(); //负责对分数的简化处理
int numerator; //分子
int denominator; //分母
//友元函数,朋友的类
friend std::ostre