#include <iostream>
using namespace std;
class aa
{friend class friendClass;//有元类
friend void friendFunc();//有元函数
public:
int public_num;
void public_func()//类的函数 调用 类的成员变量
{cout<<"public_func: "<<public_num<<endl;
cout<<"==================public"<<endl; }
protected:
int protected_num;
void protected_func()
{cout<<"protected_func:"<<protected_num<<endl;
cout<<"==================protected"<<endl;}
private:
int private_num;
void private_func()
{cout<<"private_func: "<<private_num<<endl;
cout<<"==================private"<<endl;}
};
class friendClass
{public:
friendClass()
{ cout<<endl;
cout<<"friendClass"<<endl;
aa aAa;
aAa.public_num=1;
aAa.protected_num=2;
aAa.private_num=3;
aAa.public_func();
aAa.protected_func();
aAa.private_func();
}
~friendClass(){}
};
void friendFunc()
{
cout<<endl;
cout<<"friendFunc"<<endl;
aa bBb;
bBb.public_num=11;
bBb.protected_num=22;
bBb.private_num=33;
bBb.public_func();
bBb.protected_func();
bBb.private_func();
}
int main()
{
aa aEa;//类的实例
//类的public成员变量、成员函数,可以通过类的成员函数、类的实例变量进行访问
aEa.public_num=111;
aEa.public_func();
//类的实例变量 无法访问 protected成员变量、成员函数
//aEa.protected_num=222; 错误
//aEa.protected_func(); 错误
//类的实例变量 无法访问 private成员变量、成员函数
//aEa.private_num=333; 错误
//aEa.private_func(); 错误
friendFunc();/* 友元函数可以访问public,protected,private成员变量和函数 */
friendClass friendObject;/* 友元类可以访问public,protected,private成员变量和函数 */
cout << "Hello World!" << endl;
return 0;
}