请为时间类添加拷贝构造函数和赋值运算符函数。
#include <iostream>
#include <iomanip>
using namespace std;
/* 你提交的代码将被嵌在这里 */
int main()
{
int h, m, s;
cin >> h >> m >> s;
MYTIME a(h, m, s), b(a), c;
a.Output();
cout << endl;
b.Output();
cout << endl;
c.Output();
cout << endl;
c = b = a;
a.Output();
cout << endl;
b.Output();
cout << endl;
c.Output();
cout << endl;
return 0;
}
输入样例
19 35 48
输出样例
Create 19:35:48
Clone 19:35:48
Create 00:00:00
19:35:48
19:35:48
00:00:00
Assign 19:35:48
Assign 19:35:48
19:35:48
19:35:48
19:35:48
Destroy 19:35:48
Destroy 19:35:48
Destroy 19:35:48
注:为便于学习和研究,在拷贝构造函数和赋值运算符函数中增加输出语句以标识程序的流程。
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
答案
class MYTIME {
private:
int hour = 0, minute = 0, second = 0;
public:
MYTIME(int h = 0, int m = 0, int s = 0) {
hour = h;
minute = m;
second = s;
cout << "Create" << ' ' << setfill('0') << setw(2) << hour << ':'
<< setfill('0') << setw(2) << minute << ':' << setfill('0') << setw(2) << second << endl;
}
~MYTIME()
{
cout << "Destroy" << ' ' << setfill('0') << setw(2) << hour << ':'
<< setfill('0') << setw(2) << minute << ':' << setfill('0') << setw(2) << second << endl;
}
void Output()
{
cout << setfill('0') << setw(2) << hour << ':'
<< setfill('0') << setw(2) << minute << ':' << setfill('0') << setw(2) << second;
}
MYTIME(const MYTIME& p)
{
this->hour = p.hour;
this->minute = p.minute;
this->second = p.second;
cout << "Clone" << ' ' << setfill('0') << setw(2) << hour << ':'
<< setfill('0') << setw(2) << minute << ':' << setfill('0') << setw(2) << second << endl;
}
MYTIME& operator=(MYTIME& p)
{
if (hour == 0)
{
hour = this->hour + p.hour;
minute = this->minute + p.minute;
second = this->second + p.second;
cout << "Assign" << ' ' << setfill('0') << setw(2) << hour << ':'
<< setfill('0') << setw(2) << minute << ':' << setfill('0') << setw(2) << second << endl;
return *this;
}
if (hour != 0)
{
cout << "Assign" << ' ' << setfill('0') << setw(2) << hour << ':'
<< setfill('0') << setw(2) << minute << ':' << setfill('0') << setw(2) << second << endl;
return *this;
}
}
};