目录
1.友元是什么
2.全局函数做友元
3.友元类
类外写成员函数
4.成员函数做友元
1.友元是什么
在生活中,我们的家里有客厅也有卧室
客人都能进出你家的客厅,但不能进入你家的卧室
但只要你允许,你也可以让自己的好朋友进入你的卧室
友元的关键字为 friend
2.全局函数做友元
代码示例:
#include<bits/stdc++.h>
using namespace std;class home
{friend void my_good_friend(home *h);//my_good_friend全局函数是home的好朋友//可以访问home中的私有成员public:home(){my_sittingroom = "客厅";my_bedroom = "卧室";}public:string my_sittingroom;private:string my_bedroom;};void my_good_friend(home *h)
{cout << "你的好朋友正在访问你的" << h -> my_sittingroom << endl;cout << "你的好朋友正在访问你的" << h -> my_bedroom << endl;
}int main(){home h;my_good_friend(&h);return 0;
}
3.友元类
类外写成员函数
代码示例:
#include<bits/stdc++.h>
using namespace std;class home
{friend class good_friend;public:home();
public:string my_sittingroom;private:string my_bedroom;
};class good_friend
{
public:good_friend();void visit();private:home *h;
};//类外写成员函数
home::home()
{my_sittingroom = "客厅";my_bedroom = "卧室";
}good_friend::good_friend()
{h = new home;
}void good_friend::visit()
{cout << "好朋友正在访问" << h -> my_sittingroom << endl;cout << "好朋友正在访问" << h -> my_bedroom << endl;
}int main(){good_friend g;g.visit();return 0;
}
4.成员函数做友元
代码示例:
#include<bits/stdc++.h>
using namespace std;class home;class good_friend
{
public:good_friend();void visit();//让visit可以访问home中的私有成员void visit2();//让visit2不可以访问home中的私有成员private:home *h;
};class home
{friend void good_friend::visit();//使得good_friend的成员函数visit可以访问本类的私有成员public:home();
public:string my_sittingroom;private:string my_bedroom;
};//类外写成员函数
home::home()
{my_sittingroom = "客厅";my_bedroom = "卧室";
}good_friend::good_friend()
{h = new home;
}void good_friend::visit()
{cout << "好朋友正在访问" << h -> my_sittingroom << endl;cout << "好朋友正在访问" << h -> my_bedroom << endl;
}void good_friend::visit2()
{cout << "好朋友正在访问" << h -> my_sittingroom << endl;//cout << "好朋友正在访问" << h -> my_bedroom << endl;
}int main(){good_friend g;g.visit();g.visit2();return 0;
}