C++友元函数与友元类

一.友元分为友元函数和友元类

   友元函数:一个类的友元函数可以访问该类的私有成员
   友元类  :如果A是B的友元类,那么A的成员函数可以访问B的私有成员

1. 友元的基本概念
在C++中,友元是一种权限授予机制,它允许一个类或函数访问另一个类中的私有成员(私有成员变量和私有成员函数)。当一个类或函数被声明为另一个类的友元时,它就能够绕过访问权限进行访问,即使这些成员在普通情况下对外是不可见的。

友元的作用类似于家庭中的密友,可以借助其特殊身份获得其他成员私有信息的访问权。然而,友元并不是简单的双向关系,即A类是B类的友元,B类也是A类的友元,这种关系并不成立。

二.为什么要用友元函数

  1. 类的私有成员是不允许类外的任何函数和外部类存取的,可以引入友元函数,是为在该类中提供一个对外(除了它自己以外)访问的窗口
  2.注意:友元函数不是类的成员,不属于任何类
  3.友元函数不属于该类的成员函数,它是定义在类外的普通函数,只是类中声明该函数可以直接访问类中的private或者protected成员

三.友元的声明

在C++中,声明友元需要在目标类中进行,可以是另一个类或者一个全局函数。当一个类声明另一个类为友元时,友元类将能够访问目标类的私有成员。

友元的声明通常放在类的定义中,位于`public`、`protected`和`private`之外。声明的语法如下:

四.友元函数

友元函数是声明为另一个类的友元的全局函数。在C++中,友元函数可以访问其所属类的私有成员,但不是类的成员函数。友元函数没有隐含的this指针,因此不能直接访问类的非静态成员变量

下面是一个友元函数的示例:

值得注意的是,友元成员函数和其他成员函数之间并没有明显的区别,它们都遵循成员函数的规则和语法。唯一的区别在于友元成员函数被声明为其他类的友元,因此它们可以访问目标类中的私有成员。

友元成员函数的使用场景与其他友元类似,可以用于操作符重载、多个类之间的交互和单元测试等情况。然而,同样要注意友元成员函数可能会打破封装性和数据隐藏原则,因此需要谨慎使用,并确保在需要的情况下使用友元成员函数

四.友元类

友元类是指一个类被声明为另一个类的友元。友元类可以访问目标类的私有成员,类似于允许其他类访问自己私有成员的特权。

下面是一个友元类的示例:

友元类的注意事项:

(1) 友元关系不能被继承。
(2) 友元关系是单向的,不具有交换性。若类B是类A的友元,类A不一定是类B的友元,要看在类中是否有相应的声明。
(3) 友元关系不具有传递性。若类B是类A的友元,类C是B的友元,类C不一定是类A的友元,同样要看类中是否有相应的申明。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值