📜  通过在 C++ 时间类中重载 +运算符来添加给定的时间戳

📅  最后修改于: 2022-05-13 01:58:43.418000             🧑  作者: Mango

通过在 C++ 时间类中重载 +运算符来添加给定的时间戳

  • 在 C++ 中,我们可以使运算符适用于用户定义的类。这意味着 C++ 能够为运算符提供对数据类型的特殊含义,这种能力称为运算符重载。
  • 在本文中,我们将在Time 类中重载运算符“+”,以便我们可以仅使用 + 连接两个时间戳。

例子:

方法:为实现+运算符重载,执行以下步骤/功能:

定义类时间,其中有 3 个变量分别存储小时、分钟和秒的值。

int HR, MIN, SEC;
where HR is for hours, 
      MIN is for minutes, and 
      SEC is for seconds
  • setTime()函数设置 HR、MIN 和 SEC 的值。
void setTime(int x, int y, int z)
{
    x = HR;
    y = MIN;
    z = SEC;
}
  • showTime()函数以特定格式 (HH:MM:SS) 显示时间。
void showTime()
{
    cout << HR << ":" << MIN << ":" << SEC;
}
  • normalize()函数将结果时间转换为标准格式。

重载 +运算符以使用运算符重载添加时间 T1 和 T2。

下面是实现 + 重载以添加两个时间戳的 C++ 程序:

C++
// C++ program to implement + operator
// overloading to add two timestamps
 
#include 
using namespace std;
 
// Time class template
class Time {
private:
    int HR, MIN, SEC;
 
    // Defining functions
public:
    // Functions to set the time
    // in the Time class template
    void setTime(int x, int y, int z)
    {
        HR = x;
        MIN = y;
        SEC = z;
    }
 
    // Function to print the time
    // in HH:MM:SS format
    void showTime()
    {
        cout << endl
             << HR << ":" << MIN << ":" << SEC;
    }
 
    // Function to normalize the resultant
    // time in standard form
    void normalize()
    {
        MIN = MIN + SEC / 60;
        SEC = SEC % 60;
        HR = HR + MIN / 60;
        MIN = MIN % 60;
    }
 
    // + Operator overloading
    // to add the time t1 and t2
    Time operator+(Time t)
    {
        Time temp;
        temp.SEC = SEC + t.SEC;
        temp.MIN = MIN + t.MIN;
        temp.HR = HR + t.HR;
        temp.normalize();
        return (temp);
    }
};
 
// Driver code
int main()
{
    Time t1, t2, t3;
    t1.setTime(5, 50, 30);
    t2.setTime(7, 20, 34);
 
    // Operator overloading
    t3 = t1 + t2;
 
    // Printing results
    t1.showTime();
    t2.showTime();
    t3.showTime();
 
    return 0;
}


输出:
5:50:30
7:20:34
13:11:4