具体来说,可以定义一个基类Clock,包含时钟的小时和分钟两个属性,以及设置时间和显示时间的方法。然后定义一个派生类MyClock,继承基类Clock,并添加一个after方法,用于计算若干分钟后的具体时间。
下面是一个C++的示例代码:
#include <iostream>
using namespace std;
class Clock {
public:
Clock(int h = 0, int m = 0) : hour(h), minute(m) {}
void setTime(int h, int m) { hour = h; minute = m; }
void showTime() { cout << hour << ":" << minute << endl; }
protected:
int hour, minute;
};
class MyClock : public Clock {
public:
MyClock(int h = 0, int m = 0) : Clock(h, m) {}
void after(int m) {
minute += m;
hour += minute / 60;
minute %= 60;
hour %= 24;
}
};
int main() {
MyClock mc(10, 30);
mc.showTime();
mc.after(5);
mc.showTime();
return 0;
}
在这个示例代码中,我们定义了一个基类Clock和一个派生类MyClock。基类Clock包含了时钟的小时和分钟两个属性,以及设置时间和显示时间的方法。派生类MyClock继承了基类Clock,并添加了一个after方法,用于计算若干分钟后的具体时间。
class People
{
public:
//虚函数
virtual void Mypro()
{
}
};
class xishi :public People
{
public:
//重写父类的虚函数
virtual void Mypro()
{
cout << "西施" << endl;
}
};
class wangzhaojun :public People
{
public:
//重写父类的虚函数
virtual void Mypro()
{
cout << "王昭君" << endl;
}
};
//同一个操作
void doLogin(People *pro)
{
pro->Mypro();//产生不同的效果,这就是多态
}
void test()
{
People* pro = NULL;
pro = new xishi;//不同的对象
doLogin(pro);
delete pro;
pro = new wangzhaojun;//不同的对象
doLogin(pro);
delete pro;
}
问题理解: 通过继承和派生进行程序设计,编写一个计算时钟指定时间后具体时间的程序。
可行实现方式: 1. 创建一个Clock类,包含hour、minute和second成员变量,以及get_hour、get_minute、get_second等获取时间的成员函数。 2. 创建一个新类NewClock,继承自Clock类,新增一个add_minute成员函数,用于增加指定分钟数后的时间。在该函数中,首先获取当前时间,然后计算增加后的时间,并进行合法性判断。最后返回新增时间。 3. 如果需要调用该函数,在main函数中创建NewClock对象,调用add_minute函数并输出结果即可。
具体代码实现:
#include <iostream>
using namespace std;
class Clock {
protected: // 储存时间的成员变量,子类可以继承
int hour;
int minute;
int second;
public:
Clock(int h, int m, int s) { // 带参数构造函数
hour = h;
minute = m;
second = s;
}
int get_hour() { return hour; } // 获取时间的函数
int get_minute() { return minute; }
int get_second() { return second; }
};
class NewClock : public Clock { // 新类继承Clock类
public:
NewClock(int h, int m, int s) : Clock(h, m, s) { } // 使用基类构造函数初始化
Clock add_minute(int minute_offset) { // 新增函数,用于增加指定分钟数后的时间
int new_hour = hour;
int new_minute = minute + minute_offset;
int new_second = second;
// 判断时间合法性
if (new_minute >= 60) {
new_hour += new_minute / 60;
new_minute %= 60;
}
if (new_hour >= 24) {
new_hour %= 24;
}
// 返回增加后的时间
Clock new_time(new_hour, new_minute, new_second);
return new_time;
}
};
int main() {
NewClock my_clock(9, 30, 45); // 创建对象
Clock new_time = my_clock.add_minute(75); // 调用函数
cout << "增加 75 分钟后的时间为:" << endl;
cout << "小时:" << new_time.get_hour() << endl;
cout << "分钟:" << new_time.get_minute() << endl;
cout << "秒钟:" << new_time.get_second() << endl;
return 0;
}
运行结果:
增加 75 分钟后的时间为:
小时:10
分钟:45
秒钟:45