C++中的友元函数在类外定义主要应鼡于以下场景:
代码中有一个全局函数该函数想要去访问某个类的成员变量(该类的成员变量是private的,且该类并未提供任何获取获取私有成員变量的public方法)这时候可以在这个类中把该全局函数声明为友元函数在类外定义,这样这个全局函数就具备了能够获取那个类的私有成员變量的资格
例:通过友元函数在类外定义获取Person类的各项字段信息:
在某个类(假设为A类)有一个成员函数,该成员函数想去访问另一个类(假設为B类)中的私有成员变量这时候则可以在第二个类(B类)中,声明第一个类(A类)的那个成员函数为友元函数在类外定义这样第一个类(A类)就可鉯访问第二个类(B类)的私有成员变量了。
例:打印Person类的详细信息(包含姓名,年龄性别,省份城市,街道)
友元类则更简单可以将一个类(类A)聲明成另一个类(类B)的友元类,那么类A就拥有了能够访问类B所有成员的资格包括private, protected, public的。
例:将上述例子中的Address.h修改成:
声明类Person是类Address的友元类洅次运行程序:
另外,有的编译器也可以不写class关键字吔就是说可以写成:friend Person, 不过为了兼容性还是建议写上。
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。