友元三例
来源:互联网 发布:mac os 10.12 beta7 编辑:程序博客网 时间:2024/05/16 10:13
//例1:一个普通函数是友元函数。可以访问类的私有成员变量
#include <iostream>
using namespace std;
class Time
{
public:
Time(int h=20,int m=25,int s=30):m_iHour(h),m_iMinute(m),m_iSecond(s){}
void Show()
{
cout<< m_iHour<<":"<< m_iMinute<<":"<<m_iSecond<<endl;
}
friend void display(Time& t);//友元函数,display()是一个普通的函数
private:
int m_iHour;
int m_iMinute;
int m_iSecond;
};
void display(Time& t)
{
cout<<t.m_iHour<<":"<<t.m_iMinute<<":"<<t.m_iSecond<<endl;
}
void main()
{
Time time1(5,6);
//time1.Show();
display(time1);
}
//例2:一个类中函数访问另一个类的私有成员变量
#include <iostream>
using namespace std;
class Date;//不完全声明
class Time
{
public:
Time(int h=20,int m=25,int s=30):m_iHour(h),m_iMinute(m),m_iSecond(s){}
void Show()
{
cout<< m_iHour<<":"<< m_iMinute<<":"<<m_iSecond<<endl;
}
void display(Date &d);
private:
int m_iHour;
int m_iMinute;
int m_iSecond;
};
class Date{
public:
Date(int y=2007,int m=12,int d=25)
{
m_iYear=y;m_iMonth=m,m_iDay=d;
}
friend void Time::display(Date &d);
private:
int m_iYear;
int m_iMonth;
int m_iDay;
};
void Time::display(Date &d)
{
cout<<d.m_iYear<<"/"<<d.m_iMonth<<"/"<<d.m_iDay<<endl;
cout<<m_iHour<<":"<< m_iMinute<<":"<<m_iSecond<<endl;
}
void main()
{
Time time1(5,6);
//time1.Show();
Date date1;
time1.display(date1);
}
//例3:一个类是另一个类的友元类
#include <iostream>
using namespace std;
class Date;
class Time
{
public:
Time(int h=20,int m=25,int s=30):m_iHour(h),m_iMinute(m),m_iSecond(s){}
void Show()
{
cout<< m_iHour<<":"<< m_iMinute<<":"<<m_iSecond<<endl;
}
void display(Date &);
private:
int m_iHour;
int m_iMinute;
int m_iSecond;
};
class Date
{
public:
Date(int y=2007,int m=12,int d=25)
{
m_iYear=y;m_iMonth=m,m_iDay=d;
}
friend Time;//类Time中所有的函数都可以访问类Date中的私有成员
private:
int m_iYear;
int m_iMonth;
int m_iDay;
};
void Time::display(Date &d)
{
cout<<d.m_iYear<<"/"<<d.m_iMonth<<"/"<<d.m_iDay<<endl;
cout<<m_iHour<<":"<< m_iMinute<<":"<<m_iSecond<<endl;
}
void main()
{
Time time1(5,6);
//time1.Show();
Date date1;
time1.display(date1);
}