重载>>时未达到预期值。我在这做错了什么?

时间:2015-11-30 07:28:07

标签: c++ function operator-overloading cin

我是C ++的初学者并且正在学习它。我现在正在处理运算符重载。在下面的代码中,我重载了>>获取类值作为输入。但是,我无法转换构造函数中描述的值。有没有办法,因为它在构造函数中被编码转换为编码。以下是我的代码:

#include <iostream>

using namespace std;

class Time
{
private:
    int hour;
    int minute;
    int second;

public:
    Time()
    {
        Time(0,0,0);
    }

    Time(int hh, int mm, int ss)
    {
        second = ss%60;
        mm +=ss/60;

        minute = mm%60;
        hh +=mm/60;

        hour = hh;
    }

    friend istream& operator>>(istream &in, Time &t1);

    int GetHour()    {        return hour;    }
    int GetMinute()     {        return minute;    }
    int GetSecond()     {        return second;    }
};

istream& operator >>(istream &in, Time &tm)
{
    in >> tm.hour;
    in >> tm.minute;
    in >> tm.second;

    return in;
}

int main()
{
    using namespace std;

    Time tm;
    cin >> tm;

    cout << tm.GetHour() << ":" << tm.GetMinute() << ":" << tm.GetSecond();

    return 0;
}

在上面,无论我输入什么值,都会将其打印为输出而不是构造函数中的语句。

1 个答案:

答案 0 :(得分:1)

您默认构建tm,然后使用重载运算符填充其中的字段。你的3参数构造函数没有被调用。