运算符重载"浮动"和"<<&#;

时间:2014-12-25 18:43:00

标签: c++ operators overloading

简而言之,我做了课程分数:

class Fraction
{
    int N;
    int D;
public:
    ostream& operator <<(ostream &);
    operator float();
};

并且在函数main()中我有:

Fraction a(3, 4);
cout << a << " = " << endl;
cout << (float)a << endl;

作为输出我得到:

0.750000 = 0.750000

为什么运营商&lt;&lt;未使用(应打印“(3/4)”)。

我的运营商&lt;&lt;如果我删除操作符浮动工作正常,但我需要转换Fraction浮动一些其他方法和函数。 我如何使用输出操作符。

通缉输出:

( 3/4 ) = 0.750000

3 个答案:

答案 0 :(得分:1)

在您的课程之外实施operator <<,作为非会员(朋友)功能。

请参阅Operator overloading

答案 1 :(得分:1)

您的输出operator<<应该接受流作为第一个参数,并将该分数作为第二个参数。现在,它正好相反(分数是第一个参数,流是第二个参数)。这意味着不调用运算符,而是将分数转换为float,然后显示浮点数。

您编写的运算符可以使用a << cout调用,这显然是错误的。

不应将其作为成员运算符,而应将此运算符实现为类外的(朋友)非成员。

样本签名:

std::ostream& operator<<(std::ostream& os, const Fraction& f);

答案 2 :(得分:0)

operator<<不应该是您的类的成员,因为它需要将流对象作为其第一个参数并且具有签名ostream &operator<<(ostream &, Fraction)

相关问题