友元类与函数可以访问类的private与protected变量,权限比派生类还要高,可以通过类对象访问,而派生类只能在类内部访问继承来的protected变量。
示例如下
#include <iostream>
using namespace std;
class A
{
friend class frd;
friend void showA(A&);
public:
int pub = 10;
private:
int pri = 20;
protected:
int pro = 30;
};
class frd
{
public:
void FrdShowA(A& a);
};
void frd::FrdShowA(A& a)
{
cout<<"freend class:A protected: "<<a.pro<<endl;
cout<<"friend class:A private: "<<a.pri<<endl;
};
void showA(A& a)
{
cout<<"friend fun:A protected: "<<a.pro<<endl;
cout<<"friend fun:A private: "<<a.pri<<endl;
};
int main()
{
A a;
frd f;
f.FrdShowA(a);
showA(a);
system("pause");
return 0;
};