04-1 友元-全局函数做友元
在声明创建类的时候,写一行friend 全局函数声明;
,这个全局函数即可在后续访问这个类中的私有属性。
#include <iostream>
#include <string>
using namespace std;
class Building //建筑物
{
friend int goodfriend(class Building* b);
public:
string m_Sittingroom; //客厅
private:
string m_Bedroom; //寝室
public:
Building()
{
m_Sittingroom = "客厅";
m_Bedroom = "寝室";
}
};
//全局函数
int goodfriend(class Building* b)
{
cout << "goodfriend" << endl;
cout << b->m_Sittingroom << endl;
cout << b->m_Bedroom << endl;
return 0;
}
int person(class Building* b)
{
cout << "person" << endl;
cout << b->m_Sittingroom << endl;
return 0;
}
int main()
{
class Building b1;
goodfriend(&b1);
person(&b1);
return 0;
}
运行结果:(环境:Windows11(arm/Apple M VM)/Visual Studio 2022/Debug/arm64)
goodfriend
客厅
寝室
person
客厅
在这里,有两个全局函数goodfriend
和person
。但是,我们在类内设置goodfriend
函数是友元,那么使用goodfriend
函数即可访问到类内的私有成员。
在上面的代码中,最重要的一行是:friend int goodfriend(class Building* b);
这句命令告诉编译器,goodfriend
函数是友元,可以访问私有数据。
:-)