Bootstrap

7-2 定义一个时间类Time

本题目要求定义一个类Time,实现相关的成员函数的定义:
class Time
{
private:
int days;
int hours;
int minutes;
public:
Time(int d,int h, int m );
Time Sum(const Time & t);
void Show() const;
};
在main()函数中从键盘读入6个整数值分别为2个类Time对象赋值,然后输出2个Time对象的和。

输入格式:

输入,在一行中给出两组整数(每组3个,含义为:日、小时、分钟),共6个数值,数值间用空格分隔。

输出格式:

在一行中输出2个Time对象累加之后的值,格式为:xx xx xx(其中xx 为整数值,3个整数含义依次为日 小时 分钟)

输入样例:

2 10 40 3 20 30

输出样例:

6 7 10

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

栈限制

8192 KB

 

#include <iostream>
using namespace std;

class Time {
private:
    int days;
    int hours;
    int minutes;
public:
    Time(int d, int h, int m): days(d), hours(h), minutes(m) 
    {
        
    }
    Time Sum(const Time &t) const {
        int total_minutes = this->days * 24 * 60 + this->hours * 60 + this->minutes +
                             t.days * 24 * 60 + t.hours * 60 + t.minutes;

        int new_days = total_minutes / (24 * 60);
        int new_hours = (total_minutes % (24 * 60)) / 60;
        int new_minutes = total_minutes % 60;

        return Time(new_days, new_hours, new_minutes);
    }

    // 显示时间
    void Show() const {
        cout << days << " " << hours << " " << minutes << endl;
    }
};

int main() {
    int d1, h1, m1, d2, h2, m2;
    cin >> d1 >> h1 >> m1 >> d2 >> h2 >> m2;

    Time t1(d1, h1, m1);
    Time t2(d2, h2, m2);

    Time t_sum = t1.Sum(t2);
    t_sum.Show();

    return 0;
}

一直不知道Time t_sum = t1.Sum(t2)是怎么样具体实现和调用的

对象创建:t1和t2是已经创建好的Time对象,它们分别通过用户输入的天数、小时数和分钟数来初始化。
函数调用:当t1.Sum(t2)被调用时,t1是调用对象(也就是*this),而t2是传递给Sum函数的参数。在函数内部,this->days、this->hours、this->minutes分别引用t1的天数、小时数和分钟数,而t.days、t.hours、t.minutes则引用t2的天数、小时数和分钟数。
返回值:Sum函数计算了t1和t2两个时间对象的和,并返回了一个新的Time对象。这个新对象包含了两个时间对象的总天数、总小时数和总分钟数。
赋值:返回的Time对象被赋值给t_sum。此时,t_sum就包含了t1和t2两个时间对象的和。
后续操作:之后,可以通过调用t_sum.Show();来显示这个总时间。

总之,Time t_sum = t1.Sum(t2);这行代码首先调用了t1对象的Sum函数,并将t2作为参数传递给该函数。然后,该函数返回一个新的Time对象,这个对象表示t1和t2两个时间对象的和。最后,这个新对象被赋值给t_sum。

;