生活中你的家有客厅(Public),有你的卧室(Private)
客厅所有来的客人都可以进去,但是你的卧室是私有的,也就是说只有你能进去
但是呢,你也可以允许你的好闺蜜好基友进去。
在程序里,有些私有属性 也想让类外特殊的一些函数或者类进行访问,就需要用到友元的技术
友元的目的就是让一个函数或者类 访问另一个类中私有成员
友元的关键字为 friend
友元的三种实现
-
全局函数做友元
-
类做友元
-
成员函数做友元
上代码:
#include<iostream>
#include<string>
using namespace std;
//友元的三种实现
//* 全局函数做友元
//* 类做友元
//* 成员函数做友元
class Building;
class classmates
{
public:
classmates();
~classmates();
public:
void visit01();
void visit02();
private:
Building *rest;
};
class Building
{
friend void goodguy(Building *rest); //全局函数 (成功!)
friend class classmates;//类 (成功!)
friend void classmates::visit01();//成员函数 (成功!)
public:
Building();
public:
string living_room;
private:
string bed_room;
};
Building::Building()
{
this->living_room = "客厅" ;
this->bed_room = "卧室";
cout << "构造函数" << endl;
}
void classmates::visit01()
{
cout << "visit01函数!" << rest->living_room << endl;
}
void classmates::visit02()
{
cout << "visit02函数!" << rest->bed_room << endl;
}
void goodguy(Building *rest)
{
cout << "好基友入侵1!!" << rest->living_room << endl;
cout << "好基友入侵2!!" << rest->bed_room << endl;
}
classmates::classmates()
{
rest = new Building;
}
classmates::~classmates()
{
delete rest;
cout << "释放成功!" << endl;
}
void test01()
{
Building b1;
classmates c1;
c1.visit01();
c1.visit02();
goodguy(&b1);
}
int main()
{
test01();
system("pause");
return 0;
}
总结:
就是说,在类里面,把要申请的友元先用 “friend” 写出来:
然后进行编写具体的函数or类就🆗了。