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

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

原文地址:https://www.cnblogs.com/hzshisan/p/12571115.html