// 重载输入运算符1
istream& operator >> (istream& in, RationalNumber& x)
{
in >> x.numerator >> x.denominator;
return in;
}
// 重载输入运算符2
istream& operator >> (istream& in, RationalNumber& x)
{
in >> x.getNumerator() >> x.getDenominator();
return in;
}
// 有理数类
class RationalNumber {
private:
int numerator; // 分子
int denominator; // 分母
public:
// 列表初始化[初值列]
RationalNumber();
RationalNumber(int , int);
void reSet(int, int); // 有理数重赋值
void print(); // 输出函数
int getNumerator()
{
return numerator;
}
int getDenominator()
{
return denominator;
}
};
----------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------
如题VS2017:
输入运算符1可以匹配但是输入运算符2不能匹配,这是什么原因呢,,,
int &_Val 又是什么意思呢,,,
重载为友元函数,注意分清ostream和istream
class RationalNumber {
private:
int numerator; // 分子
int denominator; // 分母
public:
// 列表初始化[初值列]
RationalNumber();
RationalNumber(int, int);
void reSet(int, int); // 有理数重赋值
void print(); // 输出函数
int getNumerator()
{
return numerator;
}
int getDenominator()
{
return denominator;
}
// 重载输入运算符1
friend istream& operator >> (istream& in, RationalNumber& x)
{
in >> x.numerator >> x.denominator;
return in;
}
// 重载输入运算符2
friend ostream& operator << (ostream& out, RationalNumber& x)
{
out << x.getNumerator() << x.getDenominator();
return out;
}
};
输入流 友元函数可以直接将numerator赋值,getNumerator()只是一个 int 类型且无法赋值。。?
输出流 只是输出不会出错。。。
没看懂。。。你的重载函数是写在那个位置的,是都在class里边么。。。