有一个日期(Date)类的对象和一个时间(Time)类的对象,均已指定了内容,要求一次输出其中的日期和时间。将Time类声明为Date类的友元类,这样Time中的所有函数都可以访问Date类中的所有成员。
方法一:
#include<iostream>
using namespace std;
class Date;//对Date类的提前引用声明
class Time//声明Time类
{
public:
Time(int,int,int);//声明构造函数
void display(Date&);//display是成员函数,形参是Date类对象的引用
private:
int hour;
int minute;
int sec;
};
class Date//声明Date类
{
friend Time;//在Date类的定义体中,将Time类声明为Date类的友元类
public:
Date(int,int,int);//声明构造函数
private:
int month;
int day;
int year;
};
Time::Time(int h,int m,int s)//定义类Time的构造函数
{
hour=h;
minute=m;
sec=s;
}
Date::Date(int m,int d,int y)//类Date的构造函数
{
month=m;
day=d;
year=y;
}
void Time::display(Date& d)//display的作用是输出年、月、日和时、分、秒
{
cout<<d.month<<"/"<<d.day<<"/"<<d.year<<endl;//引用Date类对象中的私有数据
cout<<hour<<":"<<minute<<":"<<sec<<endl;//引用本类Time中的私有数据
}
int main()
{
Time t1(10,13,56);//定义Time类对象t1
Date d1(12,25,2004);//定义Date类对象d1
t1.display(d1);//调用t1中的display函数,实参是Date类对象d1
return 0;
}
方法一简化版:
#include<iostream>
using namespace std;
class Date;//对Date类的提前引用声明
class Time//声明Time类
{
public:
Time(int,int,int);//声明构造函数
void display(const Date&);//display是成员函数,形参是Date类对象的引用
private:
int hour;
int minute;
int sec;
};
Time::Time(int h,int m,int s):hour(h),minute(m),sec(s)
{
}
class Date//声明Date类
{
public:
Date(int,int,int);//声明构造函数
friend Time;//将Time类声明为朋友类
private:
int month;
int day;
int year;
};
Date::Date(int m,int d,int y):month(m),day(d),year(y)
{
}
void Time::display(const Date& d)//display的作用是输出年、月、日和时、分、秒
{
cout<<d.month<<"/"<<d.day<<"/"<<d.year<<endl;//引用Date类对象中的私有数据
cout<<hour<<":"<<minute<<":"<<sec<<endl;//引用本类Time中的私有数据
}
int main()
{
Time t1(10,13,56);//定义Time类对象t1
Date d1(12,25,2004);//定义Date类对象d1
t1.display(d1);//调用t1中的display函数,实参是Date类对象d1
return 0;
}
方法二:
#include<iostream>
using namespace std;
class Time;//对Time类的提前引用声明
class Date//声明Date类
{
friend Time;//在Date类的定义体中,将Time类声明为Date类的友元类
public:
Date(int,int,int);//声明构造函数
private:
int month;
int day;
int year;
};
class Time//声明Time类
{
public:
Time(int,int,int);//声明构造函数
void display(Date&);//display是成员函数,形参是Date类对象的引用
private:
int hour;
int minute;
int sec;
};
Date::Date(int m,int d,int y)//类Date的构造函数
{
month=m;
day=d;
year=y;
}
Time::Time(int h,int m,int s)//定义类Time的构造函数
{
hour=h;
minute=m;
sec=s;
}
void Time::display(Date& d)//display的作用是输出年、月、日和时、分、秒
{
cout<<d.month<<"/"<<d.day<<"/"<<d.year<<endl;//引用Date类对象中的私有数据
cout<<hour<<":"<<minute<<":"<<sec<<endl;//引用本类Time中的私有数据
}
int main()
{
Time t1(10,13,56);//定义Time类对象t1
Date d1(12,25,2004);//定义Date类对象d1
t1.display(d1);//调用t1中的display函数,实参是Date类对象d1
return 0;
}
方法二简化版:
#include<iostream>
using namespace std;
class Time;//对Time类的提前引用声明
class Date//声明Date类
{
public:
Date(int,int,int);//声明构造函数
friend Time;//将Time类声明为朋友类
private:
int month;
int day;
int year;
};
Date::Date(int m,int d,int y):month(m),day(d),year(y)
{
}
class Time//声明Time类
{
public:
Time(int,int,int);//声明构造函数
void display(const Date&);//display是成员函数,形参是Date类对象的引用
private:
int hour;
int minute;
int sec;
};
Time::Time(int h,int m,int s):hour(h),minute(m),sec(s)
{
}
void Time::display(const Date& d)//display的作用是输出年、月、日和时、分、秒
{
cout<<d.month<<"/"<<d.day<<"/"<<d.year<<endl;//引用Date类对象d1中的数据成员
cout<<hour<<":"<<minute<<":"<<sec<<endl;//引用本类Time对象d1中的数据成员
}
int main()
{
Time t1(10,13,56);//定义Time类对象t1
Date d1(12,25,2004);//定义Date类对象d1
t1.display(d1);//调用t1中的display函数,实参是Date类对象d1
return 0;
}