首页 > 其他分享 >友元(Friend)

友元(Friend)

时间:2024-10-27 17:00:16浏览次数:1  
标签:友元 函数 成员 private Friend 友元类

友元(突破 private 限制)

友元函数

只要让函数 func 成为类 Men 的友元函数,那么 func 这个函数就能够访问类 Men 的所有成员(成员变量、成员函数),private、protected

总结:
友元函数 func(。。。) 是个函数,通过声明为某个类 Men 的友元函数,它就能访问这个类(Men)的所有成员
,包括 public,protected,private

友元类

可以把其它的类定义成友元类,如果你是我的 友元类,那么你就可以在你的成员函数中,访问我的所有成员,包括 public,protected,private

我们修改类 A,让类 C 成为类 A的 友元类

定义友元类后,C 类可以访问 A类的所有成员

A a;
C c;
c.callCAF(3, a);

注意:每个类都负责控制自己的友元类和友元函数:所以:

  1. 友元关系不能被继承
  2. 友元关系是单向的
  3. 友元关系是没有传递性的

友元成员函数(不希望整个类都成为 Friend,只希望某些成员函数是我的朋友)

写这种友元成员的函数,必须要注意代码组织结构,因为有声明和实现依赖关系在这里边
callCAF:本来是 C 中的成员函数,同时也是类 A 的友元函数 ===> 友元成员函数

友元成员函数:类中的一个 public 成员函数

总结

友元 Friend

  • 优点:允许在特定情况下。某些非成员函数访问类的 protected、private 成员,从而提出友元这一概念
  • 缺点:破坏了类封装性,降低了类的可靠性和可维护性

标签:友元,函数,成员,private,Friend,友元类
From: https://www.cnblogs.com/aclq/p/18508611

相关文章

  • CF771A. Bear and Friendship Condition 题解 并查集
    题目链接:https://codeforces.com/problemset/problem/771/A视频讲解:https://www.bilibili.com/video/BV1tZ1FYPELp/?p=6题目大意:判断一个无向图中的每个连通块是否都是一个完全图。首先我们可以用并查集维护每个连通块的大小。其次,我们可以开一个\(cnt_i\)表示以节点\(i\)......
  • 没有方向盘和踏板,特斯拉发布无人驾驶出租车;字节豆包推出 AI 智能体耳机 Ola Friend丨
       开发者朋友们大家好: 这里是「RTE开发者日报」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享RTE(Real-TimeEngagement)领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有看点的会议」,但内容仅代表编......
  • 友元函数friend
    在C++中,友元函数(FriendFunction)是一种特殊类型的函数,它不属于类的成员函数,但可以访问类的私有成员和保护成员。友元函数可以是普通函数、其他类的成员函数或类的成员函数模板。下面是关于C++友元函数的一些关键知识点:定义友元函数友元函数的声明需要在类的内部进行,使用关......
  • 字节预热智能硬件 Ola Friend,预计为智能耳机;鸿蒙 NEXT 公测正式开启,微信邀请内测丨RTE
       开发者朋友们大家好: 这里是「RTE开发者日报」,每天和大家一起看新闻、聊八卦。 我们的社区编辑团队会整理分享RTE(Real-TimeEngagement)领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有看点的会议」,但内容仅代......
  • C++ day04(友元 friend、运算符重载、String字符串)
    目录【1】友元friend1》概念2》友元函数 3》友元类 4》友元成员函数 【2】运算符重载1》概念2》友元函数运算符重载 ​编辑 3》成员函数运算符重载4》赋值运算符与类型转换运算符重载 5》注意事项【3】String字符串类【1】友元friend1》概念定义:......
  • 老友记台词 第二季 第十八集 Friends 218(全英版)
    文章目录218Dr.RemoreDies[Scene:MonicaandRachel'sapartment.EveryoneexceptRossistherewatchingDaysofOurLives.][Scene:ChandlerandEddie'sapartment.ChandlerisatthefoosballtabletryingtogetPhoebetoplayagamewithhim.][Sce......
  • 友元运算符重载函数
    目录1.定义友元运算符重载函数的语法形式2.双目运算符重载3.单目运算符重载1.定义友元运算符重载函数的语法形式        (1)在类的内部,定义友元运算符重载函数的格式如下:friend函数类型operator运算符(形参表){函数体}        (2)在类中,声明友......
  • C++友元和运算符重载
    目录一.友元friend1.1概念1.2友元函数1.3友元类1.4友元成员函数二.运算符重载2.1概念2.2成员函数运算符重载2.3成员函数运算符重载2.4特殊运算符重载2.4.1赋值运算符重载2.4.2类型转换运算符重载2.5注意事项三、std::string字符串类(熟悉)一.友元......
  • [USACO22DEC] Making Friends P 题解
    T2[USACO22DEC]MakingFriendsP考虑删除一个点,会有如下的点相连接:题目要求如果两两个点建立联系,只会建立一次。所以,神奇地,我们取出当前待删的点所连接的最小的点,将它和剩下的点连接。手摸一下会发现这样就巧妙地给每个改建的边都建了一次。所以用一个set启发式合并就做完......
  • Day4 C++(运算符重载,模板与容器)(友元函数,运算符重载,赋值运算符,string字符串类,模板)
    1.友元friend1.1概念(掌握)定义:类实现了数据的隐藏与封装,类的数据成员一般定义为私有成员,仅能通过类的成员函数才能读写。如果数据成员定义为公共的,则又破坏了封装性。但是某些情况下,需要频繁读写类的成员,特别是在对某些成员函数多次调用时,由于参数传递、类型检查和安全......