定义一个时间类Time,有三个私有成员变量Hour、Minute、Second,定义构造函数、析构函数以及用于改变、获取、输出时间信息的公有函数,主函数中定义时间对象,并通过调用各种成员函数完成时间的设定、改变、获取、输出等功能。
① 按要求完成类的定义与实现。
② 修改数据成员的访问方式,观察编译结果。
③ 在Time类中定义一个成员函数,用于实现时间增加一秒的功能,主函数中通过对象调用该函数,并输出增加一秒后的时间信息。
④ 定义一个普通函数。
void f(Time t)
{ t. PrintTime( );
}
在Time类中增加拷贝构造函数的定义,主函数中调用该函数,运用调试工具跟踪,分析整个程序调用构造函数(包括拷贝构造函数)和析构函数的次数;再将f函数的形式参数分别修改为引用参数和指针参数(此时函数代码修改为{t-> PrintTime( );},主函数中调用,再分析此时调用构造函数和析构函数的次数。
#include<iostream>
using namespace std;
class Time
{
private:
int Hour, Minute, Second;
public:
Time(int h = 0, int m = 0, int s = 0);
Time(const Time &t);
~Time();
void SetTime(int h, int m, int s);
int GetHour();
int GetMinute();
int GetSecond();
void PrintTime();
void IncreaceOneSecond();
};
//构造函数
Time::Time(int h , int m , int s )
{
cout << "构造函数调用" << endl;
Hour = h;
Minute = m;
Second = s;
}
Time::Time(const Time &t)
{
cout << "拷贝构造函数调用" << endl;
Hour = t.Hour;
Minute = t.Minute;
Second = t.Second;
}
//析构函数
Time::~Time()
{
cout << "析构函数调用" << endl;
}
//改变时间信息
void Time::SetTime(int h, int m, int s)
{
Hour = h;
Minute = m;
Second = s;
}
//获取时间信息
int Time::GetHour()
{
return Hour;
}
int Time::GetMinute()
{
return Minute;
}
int Time::GetSecond()
{
return Second;
}
//输出时间信息
void Time::PrintTime()
{
cout << "时间:" << Hour << "时" << Minute << "分" << Second << "秒" << endl;
}
//时间加一秒
void Time::IncreaceOneSecond()
{
Second++;
if (Second >= 60)
{
Second -= 60;
Minute++;
}
if (Minute >= 60)
{
Minute -= 60;
Hour++;
}
if (Hour >= 24)
{
Hour -= 24;
}
}
//定义普通函数
void f(Time t)
{
t.PrintTime();
}
int main()
{
Time a1;
Time a2(23);
Time a3(23, 59);
Time a4(23, 59, 59);
Time *t = &a1;
a1.PrintTime();
a2.PrintTime();
a3.PrintTime();
a4.PrintTime();
a1.IncreaceOneSecond();
a2.IncreaceOneSecond();
a3.IncreaceOneSecond();
a4.IncreaceOneSecond();
a1.PrintTime();
a2.PrintTime();
a3.PrintTime();
a4.PrintTime();
t->SetTime(1, 1, 1);
a1.PrintTime();
t->PrintTime();
return 0;
}