一、有一个日期类对象Date和一个时间类对象Time,要求输出日期和时间。
#include <iostream> using namespace std; class Date;//提前声明 class Time { public: Time(int,int,int); void display(Date &);//形参是Date类对象引用 private: int hour; int minute; int second; }; class Date { public: Date(int,int,int); friend void Time::display(Date &);//声明为友元成员函数 private: int month; int day; int year; }; Time::Time(int h,int m,int s) { hour=h; minute=m; second=s; } void Time::display(Date &d) { cout<<d.month<<"/"<<d.day<<"/"<<d.year<<endl; cout<<hour<<":"<<minute<<":"<<second<<endl; } Date::Date(int m,int d,int y) { month=m; day=d; year=y; } int main() { Time t1(10,24,45); Date d1(12,25,2019); t1.display(d1); return 0; }或者直接 Time(int h,int m,int s):hour(h),minute(m),second(s){};
Date(int m,int d,int y):month(m),day(d),year(y){};
二、display函数作为类外普通函数,声明为Date类,Time类友元函数
#include <iostream> using namespace std; class Date; class Time { public: Time(int h,int m,int s):hour(h),minute(m),second(s){}; friend void display(const Date &,const Time &); private: int hour; int minute; int second; }; class Date { public: Date(int m,int d,int y):month(m),day(d),year(y){}; friend void display(const Date &,const Time &); private: int month; int day; int year; }; void display(const Date &d,const Time &t) { cout<<d.month<<"/"<<d.day<<"/"<<d.year<<endl; cout<<t.hour<<":"<<t.minute<<":"<<t.second<<endl; } int main() { Time t1(10,24,45); Date d1(12,25,2019); display(d1,t1); return 0; }三、将Date类声明为Time类的友元类,通过Time类的display函数引用Date类对象的私有数据,输出日期和时间。
#include <iostream> using namespace std; class Time; class Date { public: Date(int m,int d,int y):month(m),day(d),year(y){}; friend Time; private: int month; int day; int year; }; class Time { public: Time(int h,int m,int s):hour(h),minute(m),second(s){}; void display(const Date &); private: int hour; int minute; int second; }; void Time::display(const Date &d) { cout<<d.month<<"/"<<d.day<<"/"<<d.year<<endl; cout<<hour<<":"<<minute<<":"<<second<<endl; } int main() { Time t1(10,24,45); Date d1(12,25,2019); t1.display(d1); return 0; }