//#include<iostream>
//using namespace std;
//
//class Stu
//{
//protected:
//private:
// int age;
// void fun()
// {
// age = 12;
// cout << age << endl;
// }
//public: //友元 的声明不受修饰符的限制
// friend void fun1(); //声明友元函数
// //将fun1()声明为Stu类的友元函数,这样fun1()函数就能够调用Stu类中的私有成员了
// //友元函数可以调用类内的private成员和protected成员,
// //换句话说,就是类内的成员对于友元函数全部公开
//protected: //一个类可以有多个友元
// friend class Teach; //声明一个友元类
//}; //友元的缺点:破坏了类的封装性,不到迫不得已不使用
//void fun1()
//{
// Stu stu1;
// stu1.fun();
//}
//
//class Teach //在两个毫不相干的类,若一个类想调用另一个类的私有和受保护成员只能通过友元去调用
//{
//public:
// Stu stu2;
//
//
// void fun2()
// {
// stu2.fun();
// }
//};
//
//int main()
//{
// /*Stu stu3;
// stu3.fun(); 主函数并不是类内的友元函数,所以仍无法调用类中的私有成员*/
// fun1(); //需要在主函数中调用类的友元函数间接调用类的私有成员
// Teach teach;
// teach.fun2();
//
// return 0;
//}