目录
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;
}