c++考点之友元

如题:

2021年4月:
在这里插入图片描述

分析

题本身没啥可说的,主要是复习下使用方法。
这部分内容属于c++复习之类和对象进阶,看讲义7部分的话,类外函数访问本类的私有成员变量。不太使用,不能够理解“类外函数”。

知识点:“类外函数”情形

最常用的情形,将其他类的成员函数用作友元

如下图所示:
在这里插入图片描述

1.其他类的成员函数,包括构造和析构函数,都可以说明为一个类的友元函数
2.当创建一个类的对象时,就可以通过友元函数,访问友元函数所在类的私有变量。

友元函数如何访问所在类的私有成员?

通过友元函数的参数,传递所在类的对象,再通过所在类对象访问。如上图示。func(Two&),调用时,会传递Two的对象,通过对象调用友元函数所在类的私有变量。这可以称为友元机制

类本身的友元函数

也就是讲义上所说的全局函数情形。从这也可以看出,用friend声明的函数,肯定不是这个类的成员函数。由于这个函数是个全局函数,使用时可以直接使用。不用再像类的成员函数一样,使用对象名访问。

类说明为友元

此时,不再是友元函数了,而是友元类。
说明格式为:

friend class 类名;

此时,友元类的对象中的所有(类)成员函数,都可以通过友元机制访问友元类所在类的私有成员变量。

非传递性

类A是类B的友元,类B是类C的友元,类A不是类C的友元。
解释:
a的所有的成员函数可以访问b类的私有变量,b的成员函数可以访问c的私有变量。a的成员函数能否通过友元机制访问c的私有变量呢?显然是不可以,因为友元机制是通过函数的参数来访问的,也就是a的成员函数可能通过定义b的形参来访问b的私有变量,形参b,指的是访问b的属性(也可说是变量),而属性显然不可以再带形参了。

非交换性

类a是b的友元,类b不一定是类a的友元.这个好理解。

总结

这里容易出错,是因为搞不清,谁访问谁的私有变量。a是b的友元,a就可以访问b的私有变量。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

guangod

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值