通过在 C++ 时间类中重载 +运算符来添加给定的时间戳
- 在 C++ 中,我们可以使运算符适用于用户定义的类。这意味着 C++ 能够为运算符提供对数据类型的特殊含义,这种能力称为运算符重载。
- 在本文中,我们将在Time 类中重载运算符“+”,以便我们可以仅使用 + 连接两个时间戳。
例子:
Input: T1 = 5:50:30, T2 = 7:20:34
Output: 13:11:4
方法:为实现+运算符重载,执行以下步骤/功能:
定义类时间,其中有 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