友元函数例子代码功能用来显示时间
display函数放在time类中作为date类的友元函数
#include<iostream>
using namespace std;
class date;//类的提前声明
class time
{
public:
time(int,int,int);
void display(date &);
private:
int hour;
int minute;
int sec;
} ;
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)//定义类time的成员函数
{
hour=h;
minute=m;
sec=s;
}
void time::display(date&d)
{
cout<<d.month<<"/"<<d.day<<"/"<<d.year<<endl;
cout<<hour<<":"<<minute<<":"<<sec<<endl;
}
date::date(int m,int d,int y)
{
month=m;
day=d;
year=y;
}
int main()
{
time t1(10,13,56);
date d1(12,25,2004);
t1.display(d1);
return 0;
}
display函数不放在time类中,作为类外的普通函数,然后在time和date类中将display声明为友元函数。在主函数中调用display函数
#include<iostream>
using namespace std;
class date;//类的提前声明
class time
{
public:
time(int,int,int);
friend void display(const date&,const time&);
private:
int hour;
int minute;
int sec;
} ;
class date
{
public:
date(int,int,int) ;
friend void display(const date&,const time&);
private:
int month;
int day;
int year;
};
time::time(int h,int m,int s)//定义类time的成员函数
{
hour=h;
minute=m;
sec=s;
}
void display(const date&d,const time&t)
{
cout<<d.month<<"/"<<d.day<<"/"<<d.year<<endl;
cout<<t.hour<<":"<<t.minute<<":"<<t.sec<<endl;
}
date::date(int m,int d,int y)
{
month=m;
day=d;
year=y;
}
int main()
{
time t1(10,13,56);
date d1(12,25,2004);
display(d1,t1);
return 0;
}
将time类声明为date类的友元类,通过time类中的display函数引用date类对象的私有数据,输出年月日和时分秒
#include<iostream>
using namespace std;
class time;
class date;
{
public:
date(int,int,int);
friend time;
private:
int month;
int day;
int year;
};
date::date(int m,int d,int y):month(m),day(d),day(y){}
class time
{
public:
time(int,int,int);
void display(const 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)
{
cout<<d.month<<"/"<<d.day<<"/"<<d.year<<endl;
cout<<hour<<":"<<minute<<":"<<sec<<endl;
}
int main()
{
time t1(10,13,56);
date d1(12,25,2004);
t1.display(d1);
return 0;
}