0

我将直接从我的作业表中输入问题,我不是在寻找整个问题的确切代码,我确实需要帮助找出重载运算符,但重载 + 数学运算符的示例语法将是有益的。这是问题...

*据我所知,表示完整。

*** Time 类包括两个整数成员变量(Hour 和 Minute)、mutator 函数 setHour 和 setMinute,以及访问器函数 getHour 和 getMinute。这些函数应该是内联的。

***时间类还应包括两个构造函数和一个析构函数。默认构造函数应将小时和分钟初始化为 0,并显示消息“来自默认构造函数的您好”。第二个构造函数应该为小时和分钟赋值。析构函数应该显示消息“再见析构函数”这些函数也应该是内联的。

现在为了添加和减去小时和分钟的数量,添加一个重载标准 + 数学运算符的运算符 + 函数和一个重载标准数学运算符的运算符 - 函数。***你们都需要添加一个简化函数,它检查分钟内大于 59 或小于 0 的值,并相应地处理它们到小时。示例 2 小时和 65 分钟将给出 3 小时和 5 分钟。这些函数不应该是内联的。

主程序将创建三个 Time 对象(time1, time2, time3) 提示用户输入两次时间,分别存储在第一个和第二个对象中。然后将添加第一个和第二个对象并放置在第三个对象中然后显示,然后减去放置在第三个对象中然后显示。使用带有第三个对象声明的默认构造函数和带有第一个和第二个对象声明的重载构造函数。

*作业结束*****

*起始码*****

#include<iostream>
#include<cstdlib>
using namespace std;

class TIME 
{
private:
int min;
int hour;


public:

void tickTime();
void simplify();
TIME operator +();
TIME operator -();

TIME()
{
    min = 0;
    hour = 0;
    cout << "Hello!!! From constructor\n";
}


TIME(int h, int m)
{
    hour = h;
    min = m;
}


~TIME()
{
    cout << "Goodbye!!! From destructor.\n";
    system("pause");
}

void setMin ( int m )
{
min = m;

}


void setHour (int h)
{
hour = h;
}


int getMin() const
{
return min;
}


int getHour() const
{
return hour;
}
};
void TIME :: tickTime()
{
min++;
if (min>59)
{
    min=00;
    hour++;
    if (hour>23)
        hour = 00;
}
return;
}

void TIME :: simplify()
{
{
if (min>=60)
{
    hour += (min/60);
    min = min % 60;
}
else if (min < 0)
{
    hour -= ((abs(min) / 60) + 1);
    min = 60 - (abs(min) % 60);
}


    if (hour>23)
        hour = 00;
}
return;
}


TIME TIME:: operator+()
{


return;
}

TIME TIME:: operator-()
{


return;
}

int main()
{
int min, hour;
TIME t;
int i, h, m;

cout << "Enter Hour: ";
cin >> h;
cout << "Enter Minute: ";
cin >> m;

t.setHour(h);
t.setMin(m);

cout << endl << endl;

for (i=1; i<=5; i++)
{
    t.simplify();
    t.tickTime();
cout << t.getHour() << ":" << t.getMin() << endl << endl;
}

system("pause");
return 0;
}

***结束代码***

**当前样本输出*** 你好!!!从构造函数输入小时:9 输入分钟:29

9:30

9:31

9:32

9:33

9:34

按任意键继续 。. . 再见!!!从析构函数。按任意键继续 。. . ***样本输出结束***

感谢您的帮助,我真的只是不了解重载,但我想我将能够找出对象和所有其他有趣的东西。

4

2 回答 2

0

您的实现将如下所示:-

TIME TIME::operator+(TIME const& rhs) const
{
   TIME res;
   res.hour = this->hour + rhs.hour;
   res.min = this->min + rhs.min;
   return res;
}

TIME TIME::operator-(TIME const& rhs) const
{
   TIME res;
   res.hour = this->hour - rhs.hour;
   res.min = this->min - rhs.min;

   return res;
}

其中“this”是 LHS 上的对象。

于 2014-05-01T07:39:13.643 回答
0

重载运算符用于添加两个TIME对象并从另一个对象中减去一个TIME对象:

  TIME operator+(TIME const& rhs) const;
  TIME operator-(TIME const& rhs) const;

您需要const成员函数和TIME const&参数,因为当您这样做时:

  TIME c = a + b;

您希望能够处理 whereabare constobjects 的情况。

在实施中:

TIME TIME::operator+(TIME const& rhs) const
{
   TIME res;
   // Compute the resultant
   // ...

   // Return the resultant
   return res;
}

TIME TIME::operator-(TIME const& rhs) const
{
   TIME res;
   // Compute the resultant
   // ...

   // Return the resultant
   return res;
}

现在您可以添加和减去TIME.

于 2014-05-01T02:59:20.193 回答