#include<iostream> using namespace std; class Date;//对Date的声明它是对 Date 的预引用 class Time { public: Time(int,int,int); friend void display(const Date &,const Time &);//将普通函数display声明为朋友 private: int hour; int minute; int sec; }; Time::Time(int h,int m,int s) {hour=h; minute=m; sec=s; } class Date { public: Date(int,int,int);//将普通函数display声明为朋友 friend void display(const Date &,const Time &); private: int month; int day; int year; }; Date::Date(int m,int d,int y) {month=m; day=d; year=y; } void display(const Date &d,const Time &t)//是Time和Date两个类的朋友 {cout<<d.month<<"/"<<d.day<<"/"<<d.year<<endl;//引用Date类对象t1中的数据成员 cout<<t.hour<<":"<<t.minute<<":"<<t.sec<<endl;//引用Time类对象t1中的数据成员 } int main() {Time t1(10,13,56);//定义Time类对象t1 Date d1(12,25,2004);//定义Date类对象d1 display(d1,t1);//调用display函数用对象名作实参 return 0; }
时间: 2024-03-15 17:43:33 浏览: 81
使用include <iostream>时一定要加using namespace std
这段代码定义了两个类Date和Time,其中Time类表示时间,包含了小时、分钟和秒三个私有成员变量,以及构造函数;Date类表示日期,包含了月、日和年三个私有成员变量,以及构造函数。在Time类中声明了一个友元函数display,该函数的参数是一个Date类对象和一个Time类对象的引用。在Date类中也声明了一个友元函数display,参数与Time类中声明的一致。在主函数中创建了一个Time类对象t1和一个Date类对象d1,并将它们作为参数调用了display函数,输出了日期和时间。
需要注意的是,由于Date类在Time类前面被定义,因此在Time类中需要对Date类进行预声明,否则编译器会报错。
阅读全文