c++学习笔记之友元函数

友元函数例子代码功能用来显示时间

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;
 }

猜你喜欢

转载自blog.csdn.net/qq_24163555/article/details/84315223