本题目要求定义一个类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。