C++超详细知识点(五):类的友元函数和友元类
目录
- 标题: 友元函数和友元类
- 1. 友元函数
- 2. 友元类
标题: 友元函数和友元类
友元函数和友元类是C++中的概念,它们允许某些函数或类访问另一个类的私有成员。这样的访问权限超过了通常的私有和保护访问级别。请注意,友元类的使用应该谨慎,因为它破坏了封装性。过度使用友元可能导致代码的不稳定性和可维护性下降。
1. 友元函数
特点:
①不是类的成员函数,但能够访问类的私有成员。
②在类的声明中声明,但在类外部定义。
③使用关键字 friend 声明。
举例:
#include <iostream>
class MyClass
{private:int privateMember;public:MyClass(int value) : privateMember(value) {} //初始化参数列表// 友元函数的声明,使用friend 声明friend void friendFunction(const MyClass& obj);
};// 友元函数的定义。传的参数是:类的实例化对象。格式:const 类名&实例化的对象名
//这样的实例化对象可以直接访问类的私有成员
void friendFunction(const MyClass& obj) {std::cout << "Friend Function: " << obj.privateMember << std::endl;
}int main() {MyClass myObject(42);friendFunction(myObject); // 调用友元函数return 0;
}
2. 友元类
定义: 友元类是一个有权访问另一个类的私有和保护成员的类。
特点:
①一个类可以将另一个类声明为友元类,以便后者能够访问前者的私有和保护成员。
②友元关系是单向的。
举例:
#include <iostream>class FriendClass; // 前向声明class MyClass
{private:int privateMember; public:MyClass(int value) : privateMember(value) {} ///初始化参数列表// 友元类声明friend class FriendClass;
};class FriendClass
{public:// 友元类的成员函数,可以访问 MyClass 的私有成员void printPrivateMember(const MyClass& obj) {std::cout << "FriendClass accessing private member: " << obj.privateMember << std::endl;}
};int main() {MyClass myObject(42);FriendClass friendObj;friendObj.printPrivateMember(myObject); // FriendClass 访问 MyClass 的私有成员return 0;
}相关文章:
C++超详细知识点(五):类的友元函数和友元类
目录 标题: 友元函数和友元类1. 友元函数2. 友元类 标题: 友元函数和友元类 友元函数和友元类是C中的概念,它们允许某些函数或类访问另一个类的私有成员。这样的访问权限超过了通常的私有和保护访问级别。请注意,友元类的使用应该…...
SOC设计:关于reset的细节
有如下几个信号 1、时钟:clk_top 2、总的reset信号:rstn_top 3、scan的reset信号:scan_rstn 4、软件复位信号:rstn_soft_sub 5、scan模式信号:scan_mode 6、reset bypass 信号:scan_rstn_sel 功能&a…...
支小蜜AI校园防欺凌系统可以使用在宿舍吗?
随着人工智能技术的快速发展,AI校园防欺凌系统已成为维护校园安全的重要手段。然而,关于这一系统是否适用于宿舍环境,仍存在一些争议和讨论。本文将探讨AI校园防欺凌系统在宿舍中的适用性,分析其潜在的优势与挑战,并提…...
外卖平台订餐流程架构的实践
当我们想要在外卖平台上订餐时,背后其实涉及到复杂的技术架构和流程设计。本文将就外卖平台订餐流程的架构进行介绍,并探讨其中涉及的关键技术和流程。 ## 第一步:用户端体验 用户通过手机应用或网页访问外卖平台,浏览菜单、选择…...
[AIGC] Spring Boot中的切面编程和实例演示
切面编程(Aspect Oriented Programming,AOP)是Spring框架的关键功能之一。通过AOP,我们可以将代码下沉到多个模块中,有助于解决业务逻辑和非业务逻辑耦合的问题。本文将详细介绍Spring Boot中的切面编程,并…...
各个类型和Json类型的相互转换
ObjectMapper类(com.fasterxml.jackson.databind.ObjectMapper)是Jackson的主要类,它可以帮助我们快速的进行各个类型和Json类型的相互转换。 对应maven: <dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId&…...
C语言:操作符详解(下)
目录 一、逗号表达式二、下标访问[ ]、函数调用()1. [ ]下标引用操作符2.函数调用操作符 三、结构成员访问操作符1.结构体(1) 结构的声明(2) 结构体变量的定义和初始化 2.结构成员访问操作符(1)结构体成员的直接访问(2)结构体成员的间接访问 四、操作符的属性:优先级…...
电商场景下 ES 搜索引擎的稳定性治理实践
继上文在完成了第一阶段 ES 搜索引擎的搭建后,已经能够实现对千万级别的商品索引的读写请求的支持。目前,单机房读流量在 500~1000 QPS 之间,写流量在 500 QPS 左右。 但随着业务的发展,问题也逐渐开始暴露࿰…...
jdk8与jdk17的区别。springboot2.x与springboot3.x的区别
1. jdk8与jdk17的区别 Java JDK 8 和 JDK 17 之间存在许多区别,包括功能、性能、语言特性和工具等方面。以下是它们之间的一些主要区别: 功能和语言特性: JDK 8引入了许多重要的语言特性,包括Lambda表达式、方法引用、Stream API、…...
Pytest测试中的临时目录与文件管理!
在Pytest测试框架中,使用临时目录与文件是一种有效的测试管理方式,它能够确保测试的独立性和可重复性。在本文中,我们将深入探讨如何在Pytest中利用临时目录与文件进行测试,并通过案例演示实际应用。 为什么需要临时目录与文件&a…...
arduino 编程esp8266
概述: 1.板子外设资源的访问:Libraries - Arduino Reference 注意:开发板未nodeMCU1.0(esp-12e)(esp8266-01s上调试的。) 2.硬件接线 en,vcc接3.3v,gnd接地(也就是和串口共地),gpio1接地。tx接串口rx,rx接串…...
基于springboot实现数据资产管理系统项目【项目源码+论文说明】计算机毕业设计
基于springboot实现数据资产管理系统演示 摘要 固定资产管理系统主要是完成对系统用户管理、资产信息管理、资产变更管理、资产用途管理、资产类别管理和资产增减管理。因为利用本系统管理员可以直接录入信息,修改信息,删除信息,并且若在录入…...
在Java中如何将十进制转换为二进制,八进制,十六进制以及它们之间的互相转换
目录 一、算法实现进制之间的转换 (1)十进制转换为二进制 (2)二进制转换成十进制 二、Java中的API实现进制转换 (1)十进制转换为二进制 (2)十进制转换为八进制 (3…...
AK/SK加密认证
一、AK/SK概念 Access Key (AK):AK是一个全局唯一的字符串标识符,用于标识用户。它类似于用户名,但仅用于身份识别,并不包含任何秘密信息。 Secret Access Key (SK):SK则是一个高度保密的密钥,类似于密码&…...
前端实现websocket通信讲解(vue2框架)
websocket: WebSocket是HTML5下一种新的协议(websocket协议本质上是一个基于tcp的协议)它实现了浏览器与服务器全双工通信,能更好的节省服务器资源和带宽并达到实时通讯的目的Websocket是一个持久化的协议 websocket提供的api&a…...
解决ffmpeg播放摄像头延时的问题(项目案例使用有效)
第一1.目前使用的对接的海康威视的摄像机,并且采用的流媒体服务器NodeMediaServer 进行收数据流并发流数据。但是延时达到了20秒,所以客户看到的效果不是很乐观,没有办法,只能开始优化播放延时的问题,至于对接摄像头的方案有好几种。我这种情况是时间没有延迟只有画面是有…...
Android 音频系统
导入 早期Linux版本采用的是OSS框架,它也是Unix及类Unix系统中广泛使用的一种音频体系。 ALSA是Linux社区为了取代OSS而提出的一种框架,是一个源代码完全开放的系统(遵循GNU GPL和GNU LGPL)。ALSA在Kernel 2.5版本中被正式引入后,OSS就逐步…...
Java必须掌握的二叉堆知识点(含面试大厂题含源码)
二叉堆是一种常用的优先队列数据结构,广泛应用于各种场景,比如任务调度、带权图的最短路径算法(如Dijkstra算法)等。在Java面试中,了解二叉堆的基本概念、实现方式和操作是非常重要的。下面是一些关于二叉堆的关键知识…...
[Java、Android面试]_03_java内存管理:虚拟内存、堆、垃圾回收
本人今年参加了很多面试,也有幸拿到了一些大厂的offer,整理了众多面试资料,后续还会分享众多面试资料,感兴趣的朋友可收藏关注, 现分享如下: 文章目录 1. Java虚拟机运行时数据区2. Java堆3. 垃圾回收3.1 如…...
PTA题解 --- 求整数段和(C语言)
今天是PTA题库解法讲解的第二天,接下来讲解求整数段和,题目如下: 为了解决这个问题,你可以遵循以下的思路: 1. 读取输入的两个整数A和B。 2. 使用一个for循环,从A遍历到B。 3. 在循环中,打印当…...
Phi-4-mini-reasoning真实案例:教育SaaS平台月均百万次推理调用的稳定性保障
Phi-4-mini-reasoning真实案例:教育SaaS平台月均百万次推理调用的稳定性保障 1. 项目背景与挑战 在教育科技行业,数学和逻辑推理类题目的自动解答一直是技术难点。某头部教育SaaS平台在2023年接入了Phi-4-mini-reasoning模型,用于其在线作业…...
如何用StreamCap实现多平台直播内容的自动捕获与管理
如何用StreamCap实现多平台直播内容的自动捕获与管理 【免费下载链接】StreamCap Multi-Platform Live Stream Automatic Recording Tool | 多平台直播流自动录制客户端 基于FFmpeg 支持监控/定时/转码 项目地址: https://gitcode.com/gh_mirrors/st/StreamCap 在数字…...
GME-Qwen2-VL-2B-Instruct代码实例:自定义指令前缀‘Find an image that matches...’注入方法
GME-Qwen2-VL-2B-Instruct代码实例:自定义指令前缀‘Find an image that matches...’注入方法 1. 项目背景与价值 在实际的图文匹配场景中,我们经常需要判断一张图片与多个文本描述之间的匹配程度。GME-Qwen2-VL-2B-Instruct作为一个强大的多模态模型…...
行波管(TWT)核心参数权衡:填充比、流通率与电子注效率的物理本质及工程设计
在行波管(TWT)设计中,填充比(F)、流通率(ηₜᵣₐₙₛ)与电子注效率(ηₑ)是决定器件性能的三大核心参数,三者并非独立存在,而是形成了紧密的物理…...
PHP+MySQL图书管理系统实战:从环境搭建到功能实现的保姆级教程(附完整源码)
PHPMySQL图书管理系统实战:从零构建企业级应用 1. 环境配置与项目初始化 在开始构建图书管理系统之前,我们需要搭建一个稳定的开发环境。不同于传统的独立安装方式,我将推荐使用Docker容器化方案,这能确保开发环境的一致性并避免&…...
HunyuanVideo-Foley成本效益分析:自建服务与使用商用API的对比
HunyuanVideo-Foley成本效益分析:自建服务与使用商用API的对比 1. 引言:音效生成的技术选择困境 在视频制作领域,高质量音效往往能决定作品的最终质感。HunyuanVideo-Foley作为先进的AI音效生成技术,为企业提供了两种主要使用路…...
从语义熵到可信AI:构建大语言模型幻觉检测的通用框架
1. 当AI开始"胡说八道":什么是大语言模型幻觉? 想象一下,你正在咨询一位AI客服关于某款手机的参数。它信誓旦旦地告诉你"这款手机搭载了最新款骁龙8Gen3芯片,电池容量5000mAh",而实际上这款手机用…...
深入浅出Livepatch:从kprobe到ftrace的Linux热补丁实现原理
深入浅出Livepatch:从kprobe到ftrace的Linux热补丁实现原理 当你的生产环境服务器正在处理每秒数万次请求时,突然发现一个关键内核漏洞需要立即修复,传统方式要求重启系统——这无异于在高速公路上急刹车。Livepatch技术应运而生,…...
避坑指南:微信小程序递归组件的3个常见错误(以tree组件为例)
微信小程序递归组件开发避坑指南:以Tree组件为例 递归组件是前端开发中处理嵌套数据结构的利器,但在微信小程序中实现时,不少开发者容易陷入一些典型陷阱。我曾在一个电商后台管理系统项目中,因为递归组件的状态更新问题导致整个商…...
智能转换驱动科研效率:DeTikZify重构学术图表自动化新范式
智能转换驱动科研效率:DeTikZify重构学术图表自动化新范式 【免费下载链接】DeTikZify Synthesizing Graphics Programs for Scientific Figures and Sketches with TikZ 项目地址: https://gitcode.com/gh_mirrors/de/DeTikZify 在科研成果可视化的关键环节…...
