任务描述 本关任务:有如下程序: , 将上述程序中的dispaly函数不放在Time类中,而作为类外的普通函数,然后分别在Time和Date类中将display声明为友元函数。在主函数中调用dispaly函数,dispaly函数分别引用Time和Date两个类的对象的私有数据,输出年、月、日和时、分、秒。 相关知识 为了完成本关任务,你需要掌握:友元函数。 测试说明 平台会对你编写的代码进行测试: 测试输入:2004 12 25 10 13 56 预期输出: 12/25/2004 10:13:56
时间: 2023-11-22 10:52:40 浏览: 77
asp:debug类调试程序
以下是代码示例:
```cpp
#include <iostream>
using namespace std;
class Date; // 提前声明,用于函数声明
class Time {
private:
int hour, minute, second;
public:
Time(int h, int m, int s): hour(h), minute(m), second(s) {}
friend void display(Time t, Date d); // 声明友元函数
};
class Date {
private:
int year, month, day;
public:
Date(int y, int m, int d): year(y), month(m), day(d) {}
friend void display(Time t, Date d); // 声明友元函数
};
void display(Time t, Date d) { // 类外的普通函数
cout << d.month << "/" << d.day << "/" << d.year << " ";
cout << t.hour << ":" << t.minute << ":" << t.second << endl;
}
int main() {
int y, m, d, h, mi, s;
cin >> y >> m >> d >> h >> mi >> s;
Time t(h, mi, s);
Date dObj(y, m, d);
display(t, dObj); // 调用dispaly函数
return 0;
}
```
在上述代码中,我们将dispaly函数从Time类中移除,并将其作为类外的普通函数。然后,在Time和Date类中都将display声明为友元函数,这样dispaly函数就能够访问Time和Date类的私有数据。最后,在主函数中调用dispaly函数,参数分别为Time和Date类的对象。运行程序后,输出年、月、日和时、分、秒。
阅读全文