C++友元函数输出日期

友元函数基础定义:
类的友元函数是定义在类外部,但可以访问类的所有私有(private)成员和保护(protected)成员。

同时:
友元可以是一个函数,该函数被称为友元函数;
友元也可以是一个类,该类被称为友元类,在这种情况下,整个类及其所有成员都是友元。

注意:
声明函数为一个类的友元时,用关键字 friend修饰。
友元函数并不是成员函数。

举个例子:
用友元函数输出年月日

class Date {
private:
	int year,month,day;
public:
	friend void date(Date date);//创建友元函数
	void input(int,int,int);//创建普通函数
};

//普通函数要用 类名::函数名 来访问函数
void Date::input(int y,int m,int d) {
	year=y;
	month = m;
	day= d;
}

//友元函数能直接使用 对象.变量名 访问类私有(private)成员和保护(protected)成员 
void date(Date date) {
	cout << "当前是" << date.year << "年" << date.month << "月" << date.day << "日"; 
}
	
int main()
{
	Date da;//创建Date类对象
	da.input(2021, 11, 30);//用对象引用函数修改函数
	date(da);//调用友元函数打印日期
}

打印结果:
在这里插入图片描述

再举个例子:
用友元函数输出年月日和时间

class Time;	//先写一个类
class Date {
private:
	int year,month,day;
public:
	friend void date(Date date, Time time);	//创建含两个类关系的友元函数
	void input(int,int,int);//创建普通函数
};

//普通函数要用 类名::函数名 来访问函数
void Date::input(int y,int m,int d) {
	year=y;
	month = m;
	day= d;
}
 
//和上面 类和函数 两步写的内容一样
class Time {
private:
	int hours, minute, second;
public:
	//友元函数是定义在类外部,此时这样写相当于让这两个类都使用了这个友元函数
	friend void date(Date date, Time time);
	//不同方法里变量方法名重名不冲突,不引起读程序时的误会就能用
	void input(int, int, int);
};

void Time::input(int h, int m, int s) {
	hours = h;
	minute = m;
	second = s;
}

//友元函数能直接使用 对象.变量名 访问类私有(private)成员和保护(protected)成员 
void date(Date date, Time time) {
	//就能用同一个友元函数输出两个类的函数啦!
	cout << "当前是" << date.year << "年" << date.month << "月" << date.day << "日" << time.hours << ":" << time.minute << ":" << time.second << "!";
}


int main()
{
	Date da;//创建类的对象
	Time ti;
	da.input(2021, 11, 30);//利用对象引用普通函数
	ti.input(20, 54, 32);
	date(da, ti);//调用友元函数
}

打印结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值