协助重载运营商

时间:2014-05-01 01:31:22

标签: c++ constructor operators mutators

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

* 表示完整,据我所知。

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

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

现在,为了添加和减去小时和分钟数量,添加一个运算符+函数,它重载标准+数学运算符和一个运算符 - 重载标准数学运算符的函数。 ***你们都需要添加一个简化函数来检查大于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分

按任意键继续。 。 。 再见!!!来自析构函数。 按任意键继续 。 。 。 ***示例输出结束***

感谢您的帮助,我真的不理解超载,我想我能够弄清楚对象和所有其他有趣的东西。

2 个答案:

答案 0 :(得分:0)

重载操作符添加两个TIME对象并从另一个中减去TIME个对象:

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

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

  TIME c = a + b;

您希望能够处理abconst个对象的情况。

在实施中:

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的实例。

答案 1 :(得分: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上的对象。