本题目要求定义一个类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
#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){
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;
}
#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){
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;
}
红色标记的是自己不会打的部分,哈哈哈哈
t1.Sum(t2)
调用了 t1
对象的 Sum
方法,并将 t2
作为参数传递给该方法。
t1.Sum(t2)
返回一个新的Time
对象,该对象表示t1
和t2
的时间总和。- 这个新的
Time
对象被赋值给变量t_sum
,因此t_sum
现在包含t1
和t2
的时间总和 - 在
Time
类的Sum
方法中,this
指针指向的是调用该方法的对象。在示例代码中,Sum
方法是由t1
对象调用的,因此this
指针指向t1
对象。 this->days
、this->hours
和this->minutes
是指t1
的成员变量,因为Sum
方法是由t1
调用的,所以this
指向t1
。t.days
、t.hours
和t.minutes
是指t2
的成员变量,因为t
是作为参数传递给Sum
方法的。-
因此,在
Sum
方法中,this
指针指向t1
对象,而t
引用指向t2
对象。
-
明确区分当前对象和参数对象:
- 在成员函数
Sum
中,this
指针用于访问调用Sum
函数的对象的成员变量。 - 参数
t
是另一个Time
对象,传递给Sum
函数。为了区分当前对象和传入的对象,需要使用this
指针。
- 在成员函数
-
计算总分钟数:
this->days * 24 * 60 + this->hours * 60 + this->minutes
:这部分代码计算当前对象的总分钟数。t.days * 24 * 60 + t.hours * 60 + t.minutes
:这部分代码计算传入的t
对象的总分钟数。
-
将总分钟数转换为天、小时和分钟:
- 计算新的天数、小时和分钟。
- 使用这些值创建一个新的
Time
对象并返回
return Time(new_days, new_hours, new_minutes);而不是 return(new_days, new_hours, new_minutes);
Time(new_days, new_hours, new_minutes)
调用了 Time
类的构造函数,创建了一个新的 Time
对象。新创建的 Time
对象被作为返回值返回给调用者。这行代码是正确且有效的,因为它明确地创建了一个 Time
对象并返回它。
return(new_days, new_hours, new_minutes);
这行代码是错误的,因为它没有创建 Time
对象。相反,它看起来像是试图返回三个独立的整数,这在语法上是无效的。在 C++ 中,return
语句必须返回一个单一的值或对象,而不能返回多个值