04-2 友元-类做友元
在声明创建类的时候,写一行friend 类名称;
,这个新的类即可在后续访问这个类中的私有属性。
#include <iostream>
#include <string>
using namespace std;
//类做友元
class Building //建筑物
{
friend class Goodfriend;
public:
string m_Sittingroom; //客厅
private:
string m_Bedroom; //寝室
public:
Building()
{
m_Sittingroom = "客厅";
m_Bedroom = "寝室";
}
};
class Goodfriend
{
public:
class Building* b;
Goodfriend()
{
b = new class Building;
}
int visit(class Building* b)
{
cout << b->m_Sittingroom << endl;
cout << b->m_Bedroom << endl;
return 0;
}
};
int main()
{
class Goodfriend g;
g.visit(g.b);
}
运行结果:(环境:Windows11(arm/Apple M VM)/Visual Studio 2022/Debug/arm64)
客厅
寝室
在这里,运行的时候会先创建出一个对象g
,会调用Goodfriend
构造函数。这个构造函数会创建出一个b
,b
会存储一个Building
的对象的地址。此时又会调用Building
构造函数,为Building
类下的数据赋初始值。之后,我们调用Goodfriend
下面的visit
函数。这个函数需要传入一个class Building*
,那么传入的就是g.b
。
在上面的代码中,最重要的一行是:friend class Goodfriend;
这句命令告诉编译器,Goodfriend
类是友元,可以访问私有数据。
:-)