定义一个类CTimeInfo,要求满足下述要求: 1、要求有一个无参数的构造函数,其初始的小时和分钟分别为:0,0。 2、要求有一个带参数的构造函数,其参数分别对应小时和分钟。 3、要求用一个成员函数实现时间的设置(函数名:SetTime,假定以24小时时间进行设置)。 4、要求用一个友元函数实现以12小时的方式输出时间(函数名:GetTime12)。 5、要求用一个友元函数实现以24小时的方式输出时间(函数名:GetTime24)。
时间: 2024-02-22 12:00:21 浏览: 118
好的,以下是CTimeInfo类的定义及实现:
```C++
#include <iostream>
using namespace std;
class CTimeInfo {
private:
int hour; // 小时
int minute; // 分钟
public:
// 无参数构造函数
CTimeInfo() : hour(0), minute(0) {}
// 带参数构造函数
CTimeInfo(int h, int m) : hour(h), minute(m) {}
// 成员函数实现时间的设置
void SetTime(int h, int m) {
hour = h;
minute = m;
}
// 友元函数以12小时的方式输出时间
friend void GetTime12(CTimeInfo t) {
int h = t.hour;
string suffix = "AM";
if (h >= 12) {
suffix = "PM";
h -= 12;
}
if (h == 0) h = 12;
cout << h << ":" << t.minute << " " << suffix << endl;
}
// 友元函数以24小时的方式输出时间
friend void GetTime24(CTimeInfo t) {
cout << t.hour << ":" << t.minute << endl;
}
};
```
这个类有两个私有成员变量:hour和minute,分别表示小时和分钟。有一个无参数构造函数,其初始的小时和分钟分别为0,0,还有一个带参数的构造函数,可以传入小时和分钟的值。
此外,还有一个成员函数SetTime用于设置时间。注意,我们假定以24小时时间进行设置。此外,还有两个友元函数GetTime12和GetTime24用于以12小时和24小时方式输出时间。在GetTime12函数中,我们需要根据小时数判断是上午还是下午,并且转换为12小时制。在GetTime24函数中,我们直接输出小时和分钟即可。
下面是测试代码:
```C++
int main() {
CTimeInfo t1; // 调用无参数构造函数
CTimeInfo t2(16, 30); // 调用带参数构造函数
t1.SetTime(8, 45); // 设置时间为8:45
cout << "Time in 12-hour format:" << endl;
GetTime12(t1); // 输出8:45 AM
GetTime12(t2); // 输出4:30 PM
cout << "Time in 24-hour format:" << endl;
GetTime24(t1); // 输出8:45
GetTime24(t2); // 输出16:30
return 0;
}
```
输出结果如下:
```
Time in 12-hour format:
8:45 AM
4:30 PM
Time in 24-hour format:
8:45
16:30
```
阅读全文