6.13 员工的真实年龄

以面向对象的概念,建立如下一个系统
每一名员工都有一个private权限的年龄,能通过GetAge()询问其年龄,GetAge()的回答加密规则为:age+5
但管理员Admin能够获知每个员工的真实年龄。主函数和Employee类的设计如下,请写出管理员Admin类如何获知员工的真实年龄的思路,并给出相应的代码

后置代码如下

int main()
{	Employee a(65), b(19), c(43), d(80);
	cout<<a.GetAge()<<","<<b.GetAge()<<","<<c.GetAge()<<","<<d.GetAge()<<endl;//输出加密后的年龄
	Admin m;
	cout<<m.GetAge(a)<<","<< m.GetAge(b)<<","<< m.GetAge(c)<<","<< m.GetAge(d)<<endl;//输出真实年龄
	return 0;
}

期待的输出:
70,24,48,85
65,19,43,80

解决思路:两个类 一个Employee 一个Admin
如何让Admin的成员函数可以访问Employee

#include <iostream>
using namespace std;
class Employee
{
	private:
		int age;
	public:
		Employee(int a)
		{
			age=a;
		}
		int GetAge()
		{
			return age+5;
		}
};
class Admin
{
	public:
		int GetAge(Employee &a)
		{
			return a.GetAge()-5;
		}
};

本题也可以使用友元解决,请尝试

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值