1.1 C++友元函数与友元类

news2024/11/8 11:04:13

C++友元

C++中的友元(friend)是一种特殊的关系,它允许一个非成员函数或非当前类的成员函数访问一个类的私有成员。

具体来说,友元可以是一个函数、一个类或一个整个命名空间。

友元的声明通常在类定义中,它们可以被用来在类的外部访问私有或受保护的成员。

友元关系是单向的,即友元函数可以访问类的私有成员,但类不能访问友元函数的私有成员。

C++友元函数

如果在本类以外的其他地方定义了一个函数,在类体中用 friend 对其进行声明,此函数就称为本类的友元函数。

友元函数可以访问类的私有成员和受保护成员,就像类的成员函数一样。

友元函数可以是全局函数、类的静态成员函数或其他类的成员函数。

友元函数的声明通常放在类定义中,在函数定义中需要使用关键字friend来标识它是一个友元函数。

友元函数的作用在于,当需要访问类的私有成员或受保护成员时,可以通过友元函数来完成,而不必将这些成员公开给其他函数或类。

友元函数不仅可以是一般函数,还可以是另一个类中的成员函数。

下面举个一个具体的友元函数案例:
在这里插入图片描述
编译运行结果:
在这里插入图片描述
在上面的代码中,定义了一个 MyFriend 类,它有一个私有成员变量 myPrivateVar。

然后声明了一个友元函数 printPrivateVar

它可以访问类的私有成员变量。

在主函数中,创建了一个 MyClass 对象 obj,并调用了友元函数 printPrivateVar,它输出了类的私有成员变量 myPrivateVar 的值。

C++友元类

C++中的友元类(friend class)是指在类定义中声明为友元的另一个类。

友元类可以访问类的私有成员和受保护成员,就像类的成员函数一样。

友元类的声明通常放在类定义中,在类定义中需要使用关键字friend来标识它是一个友元类。

友元类的作用在于,当需要访问类的私有成员或受保护成员时,可以通过友元类来完成,而不必将这些成员公开给其他类。

与友元函数不同,友元类之间可以互相访问彼此的私有成员和受保护成员。

下面举个一个具体的友元类案例:
在这里插入图片描述
编译运行结果:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/624438.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

100G中长距离光模块,你选对了吗?

随着数据中心的快速发展,100G SR4支持的距离太短且成本又过高,在这种情况下,市场迎来了100G中长距离的解决方案:100G CWDM4和100G PSM4。对于100G中长距离方案选择也是各有千秋,下面就跟着小易来了解如何选择才是最合适…

idea中的快捷键大全, idea常用快捷键

文章目录 前言常用快捷键查找及修改快捷键根据快捷键名称查询根据快捷键查询修改快捷键 快捷键含义Alt/(代码提示)Ctrl/(注释当前行)CtrlF(在当前文件中搜索)CtrlShiftF(全局搜索)Ct…

自定义View中构造函数相关问题

目录 自定义View时,一个构造函数都不写,行不行?自定义View必须写构造函数,带几个参数? 自定义View时,一个构造函数都不写,行不行? 不行。 编译通不过。会提示: 为什么…

分布式系统概念和设计——复制技术

分布式系统概念和设计 复制 分布式系统中,复制是提高可用性和容错的关键技术。数据复制的技术,在多个计算机中维护数据的副本。复制是一种增强服务的技术。进行复制的动机包括改善服务性能,提高可用性,增强容错能力。 增强性能&…

遥感影像/无人机航片的空间分辨率GSD计算推导

遥感影像/无人机航片的空间分辨率GSD计算推导 参考资料1 参考资料2-地面分辨率,空间分辨率(GSD为地面采样间隔) GSD:无人机/遥感卫星的空间分辨率,指航片/遥感影像一个像素点代表的空间距离。 IFoV:单个像素代表的空间范围。 幅…

STM32开发——感应垃圾桶(舵机、超声波测距、振动检测)

目录 1.项目需求 2.sg90舵机介绍及实战 3.声波测距 4.感应垃圾桶 4.1GPIO口设置 4.2代码实现 1.项目需求 检测靠近时,垃圾桶自动开盖并伴随滴一声,2秒后关盖发生震动时,垃圾桶自动开盖并伴随滴一声,2秒后关盖按下按键时&…

ChatGPT 使用 拓展资料:吴恩达大咖 Building Systems with the ChatGPT API 输出检查

ChatGPT 使用 拓展资料:吴恩达大咖 Building Systems with the ChatGPT API 输出检查 在本视频中,将重点检查系统生成的输出。在向用户展示输出之前检查输出对于确保质量非常重要,提供给他们的响应的相关性和安全性,或者使用自动化或学习如何使用Moderation API。 Moderati…

labview 多位组合成1个字、1个字拆成多位

如果你需要将多位组合成1个字,以及将1个字拆成多位,本文能给你帮助。 在文章最后有下载链接(labview 2018平台写的) 1.多个布尔量和数字的转换 1.1多个布尔量转换为数字 图1-前面板(多个布尔量转换为数字) …

阿里巴巴内网开源的SpringCloudAlibaba笔记,把微服务玩的出神入化

SpringCloud Alibaba 为什么会出现? Spring Cloud Netflix 项目进入维护模式,Spring Cloud Netflix 将不再开发新的组件,我们知道 Spring Cloud 版本迭代算是比较快的,因而出现了很多中岛的 ISSUE 都来不及 Fix 就又推另一个 Rel…

做开发5年,这8个高效开发好习惯我悟了

优秀的Web开发人员工作效率更高,因为他们拥有丰富的经验和良好的习惯。工作多年,我有一些自己了解的习惯分享给大家,都曾让我受益,做开发5年了,今天来跟大家分享一下我的感想。✍🏻 首先,很多人…

CTFHub | php://input

0x00 前言 CTFHub 专注网络安全、信息安全、白帽子技术的在线学习,实训平台。提供优质的赛事及学习服务,拥有完善的题目环境及配套 writeup ,降低 CTF 学习入门门槛,快速帮助选手成长,跟随主流比赛潮流。 0x01 题目描述…

Goby 漏洞更新|用友GRP-U8 软件 U8AppProxy 任意文件上传漏洞

漏洞名称:用友GRP-U8 软件 U8AppProxy 任意文件上传漏洞 English Name:yongyou GRP-U8 U8AppProxy Arbitrary file upload vulnerability CVSS core: 9.0 影响资产数:1308 漏洞描述: 用友GRP-U8管理软件是用友公司专注于国家…

上海性能测试平均年薪30W+,5分钟看明白你和30W的差距在哪?

性能测试是测试行业中颇具技术含量的工作,不仅要求工程师对系统进行一系列复杂的需求分析,制定完善的测试计划,设计出贴近实际用户使用场景的测试用例,还要把握系统性能变化趋势,给出专业的优化建议,帮助开…

Linux防火墙学习笔记4

iptables表的概念: 每个规则链上都设置了一串规则,我们就可以把不同的规则链组合成能够完成某一个特定功集合分类,而这个集合分类我们就称为表,iptables中共有5张表,学习iptables就是要搞明白每种表的作用。 filter&…

【C++初阶】初识模板

👦个人主页:Weraphael ✍🏻作者简介:目前学习C和算法 ✈️专栏:C航路 🐋 希望大家多多支持,咱一起进步!😁 如果文章对你有帮助的话 欢迎 评论💬 点赞&#x1…

vue-router的实现原理hash/history、导航守卫、导航解析流程

文章目录 一、SPA与前端路由二、vue-router实现原理(模式)hash模式history模式 三、vue-router中的route和router四、vue-router有哪几种导航守卫全局守卫路由独享的守卫路由组件内的守卫 vue-router完整的导航解析流程 一、SPA与前端路由 前端路由本质是…

3年经验面试20K+测试岗,看到这样的面试题我懵了....

我要跳槽!我是着急忙慌的准备简历——3年软件测试经验,可独立测试大型产品项目,熟悉项目测试流程...薪资要求?3年测试经验起码能要个20K吧 我加班肝了一页半简历,投出去一周,面试电话倒是不少,…

【Web服务应用】Tomcat部署与优化

Tomcat部署 一、Tomcat简介二、tomcat组件2.1核心组件2.2Tomcat功能组件2.3Tomcat 请求过程 三、部署Tomcat服务3.1Tomcat虚拟主机配置 四、Tomcat多实例部署五、tomcat优化5.1tomcat服务优化5.2JVM的优化5.3内核的优化 一、Tomcat简介 一款 java 开发的开源的 Web 应用服务程序…

8.面向对象编程(中级部分)|Java学习笔记

文章目录 IDEA介绍包注意事项和使用细节包的三大作用包的本质分析(原理) 访问修饰符面向对象编程三大特征封装封装的理解和好处封装的实现步骤(三步) 继承继承的深入讨论/细节问题继承的本质分析super关键字super 给编程带来的便利…

是德E3648A 双路输出电源技术参数

是德基础直流电源具备所需的各种基本特性,适用于预算紧张的用户。E3640系列30-100W GPIB单路和双路输出电源外形小巧,适合作为台式和系统电源使用。它的输出纹波和噪声较低,并内置测量和基本可编程功能。Keysight E3648A 90W多路输出电源是一…