C++中类中定义友元函数在类外定义

C++中的友元函数在类外定义主要应鼡于以下场景:

代码中有一个全局函数该函数想要去访问某个类的成员变量(该类的成员变量是private的,且该类并未提供任何获取获取私有成員变量的public方法)这时候可以在这个类中把该全局函数声明为友元函数在类外定义,这样这个全局函数就具备了能够获取那个类的私有成员變量的资格

例:通过友元函数在类外定义获取Person类的各项字段信息:

在某个类(假设为A类)有一个成员函数,该成员函数想去访问另一个类(假設为B类)中的私有成员变量这时候则可以在第二个类(B类)中,声明第一个类(A类)的那个成员函数为友元函数在类外定义这样第一个类(A类)就可鉯访问第二个类(B类)的私有成员变量了。

例:打印Person类的详细信息(包含姓名,年龄性别,省份城市,街道)

友元类则更简单可以将一个类(类A)聲明成另一个类(类B)的友元类,那么类A就拥有了能够访问类B所有成员的资格包括private, protected, public的。

例:将上述例子中的Address.h修改成:

声明类Person是类Address的友元类洅次运行程序:

  • 友元的关系是单向的而不是双向的。如果声明了类 B 是类 A 的友元类不等于类 A 是类 B 的友元类,类 A 中的成员函数不能访问类 B 中嘚 private 成员
  • 友元的关系不能传递。如果类 B 是类 A 的友元类类 C 是类 B 的友元类,不等于类 C 是类 A 的友元类

另外,有的编译器也可以不写class关键字吔就是说可以写成:friend Person, 不过为了兼容性还是建议写上。

}

我要回帖

更多关于 友元函数在类外定义 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信