#include<iostream>
using namespace std;
class Date;
class Time
{
public:
Time(int a, int b, int c) :hour(a), min(b), sex(c) {}
void display(Date );
private:
int hour, min, sex;
};
class Date
{
public:
Date(int a, int b , int c) :year(a), month(b), day(c) {}
friend void Time::display(Date );
private:
int year, month, day;
};
void Time::display(Date a)
{
cout << a.year << a.month << a.day << endl;
cout << hour << min << sex << endl;
}
int main() {
Date d1(1, 2, 3);
Time t1(4, 5, 6);
t1.display(d1);
}
注意:
display的实参是date类的对象,否则无法访问对象的私有数据;
display函数体中使用date类的数据必须加上“对象名.” 例如a.year;
重点!!! date类 和time类的顺序不能改变。因为:只有当一个类的定义已经被看到时,它的成员函数才能被声明为另一个类的友元。
补充:友元函数都没有this指针,所以要用类作为形参来写。