关于友元函数的问题

来源:百度知道 编辑:UC知道 时间:2024/06/23 17:27:31
#include<iostream>
using namespace std;
class Time;
class Date
{
public:
Date(int month,int day,int year)
{
mm=month;dd=day;yy=year;
}

void showDateTime(const Time &xTime);
private:
int mm,dd,yy;

};

class Time
{
public:
Time(int hour,int minute,int second)
{
hrs=hour;mins=minute;secs=second;
}

friend void Date::showDateTime(const Time &xTime);
private:
int hrs,mins,secs;

};

void Date::showDateTime(const Time &xTime)
{
cout<<"Date:";
cout<<mm<<"/"<<dd<<"/"<<yy<<endl;
cout<<"Time:";
cout<<xTime.hrs<<":"<<xTime.mins<<":"<<xTime.secs<<endl;

}

void main()
{
Time aTime(10,49,30);
Date aDate(11,11,99);

你搞错了啊,aDate对象是Date类型,Date类定义了非友元的成员函数showDateTime,void showDateTime(const Time &xTime);这个只是普通的成员函数,不是什么友元。

Time类把成员函数Date::showDateTime(const Time &xTime);定义为友元的意思是允许Date的成员函数showDateTime内部可以访问Time类的protected和private成员,否则你说为什么showDateTime的内部可以写xTime.hrs?hrs是Time类的私有变量啊