大二(下)C++ 类和对象的定义及使用(1)

定义一个时间类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;
}                      

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值