我是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;
}
在上面,无论我输入什么值,都会将其打印为输出而不是构造函数中的语句。
答案 0 :(得分:1)
您默认构建tm
,然后使用重载运算符填充其中的字段。你的3参数构造函数没有被调用。