多重继承 DateTime类 现有时间Date类和时间Time类,要求从两者中派生出DateTime类,具体的: Date类包含成员数据:年、月、日,包含成员函数:1)构造函数Date(int y, int m, int d) 2)void SetDate(int y, int m, int d) 设置时间,这两个函数均要求判断日期的正确性 3)void print(),以"2014/12/9",即YYYY/MM/DD的形式输出数据 Time类包含成员数据:时、分、秒,包含成员函数:1)构造函数Time(int h, int m, int s) 2)void SetTime(int y, int m, int s) 设置时间,这两个函数均要求判断时间的正确性 3)void print(),以"18:21:0",即以hh:mm:ss的形式输出数据 DateTime类包含1)构造函数DateTime(ye, mo, da, ho, mi, se) ,2)显示日期时间 void print() 以“2014/12/9 18:21:00”的形式输出时间

时间: 2024-03-12 08:49:25 浏览: 17
好的,根据您的要求,可以定义如下的三个类: ```c++ #include <iostream> using namespace std; class Date { public: Date(int y, int m, int d) { SetDate(y, m, d); } void SetDate(int y, int m, int d) { year = y; month = m; day = d; // 判断日期的正确性 if (month < 1 || month > 12) { cout << "Error: Invalid month!" << endl; exit(1); } if (day < 1 || day > GetMaxDay()) { cout << "Error: Invalid day!" << endl; exit(1); } } void print() { cout << year << "/" << month << "/" << day; } protected: int year, month, day; private: bool IsLeapYear() { return (year % 4 == 0 && year % 100 != 0) || year % 400 == 0; } int GetMaxDay() { static const int max_day[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; if (month == 2 && IsLeapYear()) { return 29; } else { return max_day[month]; } } }; class Time { public: Time(int h, int m, int s) { SetTime(h, m, s); } void SetTime(int h, int m, int s) { hour = h; minute = m; second = s; // 判断时间的正确性 if (hour < 0 || hour > 23) { cout << "Error: Invalid hour!" << endl; exit(1); } if (minute < 0 || minute > 59) { cout << "Error: Invalid minute!" << endl; exit(1); } if (second < 0 || second > 59) { cout << "Error: Invalid second!" << endl; exit(1); } } void print() { cout << hour << ":" << minute << ":" << second; } protected: int hour, minute, second; }; class DateTime : public Date, public Time { public: DateTime(int ye, int mo, int da, int ho, int mi, int se) : Date(ye, mo, da), Time(ho, mi, se) {} void print() { Date::print(); cout << " "; Time::print(); } }; ``` 这个实现中,Date类和Time类都提供了构造函数和print()函数,其中Date类还提供了SetDate()函数,用于设置日期,Time类还提供了SetTime()函数,用于设置时间。DateTime类继承了Date类和Time类,并提供了自己的构造函数和print()函数,其中构造函数使用了初始化列表来初始化Date和Time的成员。在DateTime的print()函数中,我们分别调用了Date::print()和Time::print()函数,并在它们之间输出一个空格,从而实现了以“2014/12/9 18:21:00”的形式输出时间的功能。

相关推荐

最新推荐

recommend-type

python中时间转换datetime和pd.to_datetime详析

主要给大家介绍了关于python中时间转换datetime和pd.to_datetime的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用python具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
recommend-type

c# DateTime常用操作实例(datetime计算时间差)

字符串操作DateTime操作,datetime计算时间差,取当前时间,更多方法看下面代码
recommend-type

python3实现往mysql中插入datetime类型的数据

主要介绍了python3实现往mysql中插入datetime类型的数据,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
recommend-type

mysql取得datetime类型的数据,后面会跟个.0的实现方法

mysql的数据类型是datetime,数据库里存的数据是2015-01-19 05:02:02,传到java这里变成了2015-01-19 05:02:02.0,多了个尾巴.0, 可以通过以下集中方法来format显示格式: 1、regtime的类型是date型的才能这样用,...
recommend-type

解决Navicat导入数据库数据结构sql报错datetime(0)的问题

主要介绍了解决Navicat导入数据库数据结构sql报错datetime(0)的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

解答下列问题:S—>S;T|T;T—>a 构造任意项目集规范族,构造LR(0)分析表,并分析a;a

对于这个文法,我们可以构造以下项目集规范族: I0: S -> .S S -> .T T -> .a I1: S -> S. [$ T -> T. [$ I2: S -> T. I3: S -> S.;S S -> S.;T T -> T.;a 其中,点(.)表示已经被扫描过的符号,;$表示输入串的结束符号。 根据项目集规范族,我们可以构造出LR(0)分析表: 状态 | a | $ ---- | - | - I0 | s3| I1 | |acc I2 | | 其中s3表示移进到状态3,acc表示接受。在分析字符串a;a时,我们可以按照以下步骤进行
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。