当前位置: 首页 > news >正文

Day 16 C++ 友元(friend)

目录

什么是友元(friend)

友元的三种实现

全局函数做友元

类做友元

成员函数做友元


什么是友元(friend)

友元是一种访问控制的机制,它允许一个类或函数访问另一个类的私有成员。通过友元关系,可以在需要时向其他类或函数提供对类的私有成员的访问权限,从而实现灵活的编程设计。

在程序里,私有属性只有类内才能访问,有些私有属性 也想让类外特殊的一些函数或者类进行访问,就需要用到友元的技术,友元的目的就是让一个函数或者类 访问另一个类中私有成员,友元的关键字为 friend

友元的三种实现

全局函数做友元

全局函数可以被声明为类的友元函数,从而获得对类的私有成员的访问权限。在类定义中使用 friend 关键字来声明该函数为友元函数。

friend void functionName(); // 声明友元函数 

class MyClass {
private:int privateData;public:friend void friendFunction(); // 声明友元函数};void friendFunction() {MyClass obj;obj.privateData = 10; // 可以访问私有成员
}

类做友元

一个类可以将另一个类声明为友元类,这意味着被声明为友元的类可以访问声明为友元类的所有私有和保护成员。在类的定义中使用 friend 关键字来声明友元类。

friend class ClassName; // 声明友元类 

class FriendClass {
private:int privateData;public:friend class MyClass; // 声明友元类};class MyClass {
private:int privateData;public:void friendFunc(FriendClass& obj) {obj.privateData = 10; // 可以访问FriendClass的私有成员}
};

成员函数做友元

一个成员函数可以被声明为另一个类的友元函数。在类的定义中使用 friend 关键字来声明成员函数为友元函数。

friend void ClassName::memberFunctionName(); // 声明成员函数为友元函数 

class FriendClass {
private:int privateData;public:friend void MyClass::friendFunc(); // 声明MyClass的成员函数为友元函数};class MyClass {
private:int privateData;public:void friendFunc() {FriendClass obj;obj.privateData = 10; // 可以访问FriendClass的私有成员}
};

相关文章:

Day 16 C++ 友元(friend)

目录 什么是友元(friend) 友元的三种实现 全局函数做友元 类做友元 成员函数做友元 什么是友元(friend) 友元是一种访问控制的机制,它允许一个类或函数访问另一个类的私有成员。通过友元关系,可以在需要…...

步进电机1

引脚说明: VCC:电源输入口 DC:9-42VDC:电源的取值范围 AB组:用于连接电机的四条线 STEP&PUL:脉冲信号接口,用于控制速度。无细分的情况下一个脉冲步进电机走一步。 DIR:方向信号接口&#x…...

PHP-简单项目引起的大麻烦--【白嫖项目】

强撸项目系列总目录在000集 PHP要怎么学–【思维导图知识范围】 文章目录 本系列校训本项目使用技术 首页小插曲小插曲完了么?必要的项目知识PHPThinkPHPThinkPHP的MVCThinkTemplateThinkPHP 6和ThinkPHP 5 phpStudy 设置导数据库展示页面数据库表结构项目目录如图…...

Excel如何把两列互换

第一步:选择一列 打开excel,选中一列后将鼠标放在列后,让箭头变成十字方向。 第二步:选择Shift键 按住键盘上的Shift键,将列往后移动变成图示样。 第三步:选择互换 完成上述操作后,松开鼠标两…...

Java基础面试题2

Java基础面试题 一、IO和多线程专题 1.介绍下进程和线程的关系 进程:一个独立的正在执行的程序 线程:一个进程的最基本的执行单位,执行路径 多进程:在操作系统中,同时运行多个程序 多进程的好处:可以充…...

Typescript 第八章 异步编程,并行和并发(JavaScript事件循环,异步流,多线程类型安全)

Typescript第八章 异步编程,并发和并行 异步API,比如说回调,promise和流。 JavaScript引擎在一个线路中多路复用任务,而其他任务则处于空闲状态。这种事件循环是JavaScript引擎的标准线程模型。 多路复用是指在一个线程中同时处…...

c++ 打印当前时间(精确到毫秒)

打印时间精确到毫秒好实现,但是那种对用户可读性不好,更适合开头记一次结尾记一次,打印中间减出来的程序运行时间。 但是因为一些情况,我开多线程开的不方便打印结束时间,同事跟我说那你把开始时间打印一下&#xff0…...

mapstruct 错误 java.lang.NoSuchMethodError: Ljava/lang/Double 错误

问题描述 在使用 mapstruct 的过程中遇到错误 java.lang.NoSuchMethodError: Ljava/lang/Double 错误 问题解决 maven clean, 然后 maven install Build -> Rebuild Project 执行 maven install 时, 如果报错 找不到 xxx 类, 但 ctrl鼠标左键 发现可以点进去这个类, 那…...

SpringBoot+AOP+Redission实战分布式锁

文章目录 前言一、Redission是什么?二、使用场景三、代码实战1.项目结构2.类图3.maven依赖4.yml5.config6.annotation7.aop8.model9.service 四、单元测试总结 前言 在集群环境下非单体应用存在的问题:JVM锁只能控制本地资源的访问,无法控制…...

Linux系统---进程概念

文章目录 冯诺依曼体系结构操作系统(OS)进程的理解 进程状态 进程优先级 环境变量 进程地址空间 Linux2.6内核进程调度队列 一、冯诺依曼体系结构 我们常见的计算机,如笔记本。我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系。 如图…...

ELK常用语法和线上问题排查

ELK常用语法及线上问题排查 速查问题 1.全文搜索 在搜索栏输入目标值,查询所有字段中包含该值的文档 案例:用户反馈了一串id或者其他同事给了一个jobid,还没有头绪怎么查的时候,直接全局搜索 jobid 2.字段 限定字段全文搜索…...

session-cookies 三个缓存 localStorage、sessionStorage、Cookies。

session-cookies session-cookies This plugin is used to summarize the browser’s three caches localStorage, sessionStorage, Cookies.The plugin is designed to be quick and easy to use. Below is a summary of some apis. session-cookies 这个插件是用来汇总浏览…...

LA@行列式性质

文章目录 行列式性质🎈转置不变性质交换性质多重交换移动(抽出插入)👺 因子提取性质拆和性质倍加性质 手算行列式的主要方法原理:任何行列式都可以化为三角行列式 行列式性质🎈 设行列式 ∣ A ∣ d e t ( a i j ) |A|\mathrm{det}(a_{ij}) …...

【java安全】原生反序列化利用链JDK7u21

文章目录 【java安全】原生反序列化利用链JDK7u21前言原理equalsImpl()如何调用equalsImpl()?HashSet通过反序列化间接执行equals()方法如何使hash相等? 思路整理POCGadget为什么在HashSet#add()前要将HashMap的value设为其他值? 【java安全】…...

[SQL智慧航行者] - SQL刷题规划

前言: 不知不觉, 慢慢的把一些基础知识整理到了现在. SQL挖掘机系列可能就要到此结束了. 目前是规划把这部分SQL练习部分放到SQL刷题的专栏, 就不放到SQL专栏了. 因为后续如果接触更多的知识点和题目也好分类. 请大家如果关注的话, 想看SQL知识点 --> SQL专栏; 想看SQL刷…...

概率论与数理统计:第一章:随机事件及其概率

文章目录 概率论Ch1. 随机事件及其概率1.基本概念(1)随机试验、随机事件、样本空间(2)事件的关系和运算①定义:互斥(互不相容)、对立②运算法则:德摩根率 (3)概率的定义(4)概率的性质(5)概率计算排列组合 2.等可能概型1.古典概型 (离散)2.几何概型 (连续…...

elementUi重置Select选择器样式、option、deep、vue3、plus

文章目录 前言select选框样式(element-plus)option选项面板样式(element-plus) 前言 样式标签属性为<style scoped lang"scss"></style> select选框样式(element-plus) // 设置选择框的背景样式 ::v-deep .el-input__wrapper {background: transparent;b…...

jar命令的安装与使用

场景&#xff1a; 项目中经常遇到使用WinR软件替换jar包中的文件&#xff0c;有时候存在WinRAR解压替换时提示没有权限&#xff0c;此时winRAR不能用还有有什么方法替换jar包中的文件。 方法&#xff1a; 使用jar命令进行修改替换 问题&#xff1a; 执行jar命令报错jar 不…...

windows系统多线程多进程下应用函数CloseHandle的一些细节

Windows CloseHandle()函数调用之后&#xff0c;对应的内核对象的句柄计数器减去1。如果此内核对象的句柄的计数器计数变为0&#xff0c;系统会回收此内核对象。所以&#xff0c;如果创建了内核对象(例如可调用了CreateThread创建一个线程内核对象。此对象创建成功后此线程内核…...

微服务——elasticsearch

初识ES——什么是elasticsearch elasticsearch的发展 初识ES——正向索引和倒排索引 初识ES——es与mysql的概念对比 类比到mysql中是表结构约束 概念对比 初始ES——安装es和kibana 1.部署单点es 1.1创建网络 要安装es容器和kibana容器并让他们之间相连&#xff0c;这里…...

LaTeX公式转换Word终极指南:告别复制粘贴困扰的智能解决方案

LaTeX公式转换Word终极指南&#xff1a;告别复制粘贴困扰的智能解决方案 【免费下载链接】LaTeX2Word-Equation Copy LaTeX Equations as Word Equations, a Chrome Extension 项目地址: https://gitcode.com/gh_mirrors/la/LaTeX2Word-Equation 还在为LaTeX公式迁移到W…...

Qwen3-14B行业落地案例:金融研报摘要、医疗问诊辅助、客服话术生成

Qwen3-14B行业落地案例&#xff1a;金融研报摘要、医疗问诊辅助、客服话术生成 1. 开篇&#xff1a;私有部署镜像的价值 Qwen3-14B私有部署镜像为行业应用提供了强大的技术支持。这个经过优化的镜像版本完美适配RTX 4090D 24GB显存配置&#xff0c;内置完整运行环境与模型依赖…...

如何轻松解决网盘下载限速:LinkSwift网盘直链下载助手的完整指南

如何轻松解决网盘下载限速&#xff1a;LinkSwift网盘直链下载助手的完整指南 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 &#xff0c;支持 百度网盘 / 阿里云盘 / 中国移动云…...

AMD Ryzen调试工具:专业级硬件性能优化指南

AMD Ryzen调试工具&#xff1a;专业级硬件性能优化指南 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https://gitcode.com/…...

MySQL锁机制:从全局锁到行级锁的深度解读颜

如果有多个供应商&#xff0c;你也可以使用 [[CC-Switch]] 来可视化管理这些API key&#xff0c;以及claude code 的skills。 # 多平台安装指令 curl -fsSL https://claude.ai/install.sh | bash ## Claude Code 配置 GLM Coding Plan curl -O "https://cdn.bigmodel.cn/i…...

测试驱动开发中的测试先行与快速反馈

测试驱动开发中的测试先行与快速反馈 在软件开发领域&#xff0c;测试驱动开发&#xff08;TDD&#xff09;因其独特的开发模式广受推崇。其核心理念是“测试先行”与“快速反馈”&#xff0c;通过编写测试用例驱动代码实现&#xff0c;确保软件质量与设计灵活性。这种开发方式…...

终极指南:dots.ocr如何以0.845的布局检测F1分数超越竞品模型?

终极指南&#xff1a;dots.ocr如何以0.845的布局检测F1分数超越竞品模型&#xff1f; 【免费下载链接】dots.ocr Multilingual Document Layout Parsing in a Single Vision-Language Model 项目地址: https://gitcode.com/gh_mirrors/do/dots.ocr dots.ocr是一款革命性…...

ofa_image-caption行业落地:面向AI产品经理的图像描述生成工具选型指南

OFA图像描述生成工具行业落地&#xff1a;面向AI产品经理的图像描述生成工具选型指南 1. 引言&#xff1a;为什么AI产品经理需要关注图像描述生成&#xff1f; 想象一下这个场景&#xff1a;你负责的电商平台每天有数万张商品图片需要审核和打标签&#xff0c;人工团队忙得焦…...

GPU算力适配进阶:Lychee-Rerank在vLLM框架下实现PagedAttention加速部署

GPU算力适配进阶&#xff1a;Lychee-Rerank在vLLM框架下实现PagedAttention加速部署 1. 引言&#xff1a;当相关性评分遇上性能瓶颈 如果你用过本地部署的检索排序工具&#xff0c;大概率遇到过这样的场景&#xff1a;输入一个查询语句和几十条候选文档&#xff0c;然后看着进…...

Qwen3-Embedding-4B效果实测:32K长文本理解,中文检索表现惊艳

Qwen3-Embedding-4B效果实测&#xff1a;32K长文本理解&#xff0c;中文检索表现惊艳 1. 引言&#xff1a;为什么关注文本嵌入模型 在信息爆炸的时代&#xff0c;如何让计算机真正"理解"人类语言成为关键挑战。文本嵌入模型&#xff08;Text Embedding Model&#…...