C++友元

咱们一起学C++第八十九篇:之C++友元机制深入剖析与嵌套友元 在C++学习的道路上,我们共同努力,不断深入理解这门语言的各种特性。此前,我们学习了友元机制的基本概念和作用,今天,我们将进一步深入探讨友元机制中的一些复杂情况,包括友元函数的声明顺序、传递对象地址与不完全类型说明的关系,以及嵌套友元的概念和使用规则。理解这些知识将有助于我们在更复杂的编程场景中正确运用友元机制,同时也能更好地理解C++语言在访问控制和数据封装方面的设计理念。 阅读详情

友元

友元函数

但是

友元类

这里的意思是Date是Time的友元,那么就能在Date里访问Time,但是Time并不能访问Date

这种友元关系是单向的,我是你的友元,你不一定是我的友元

内部类

就是在一个类的里面再定义一个类

这里的类B是类A的一个内部类,还可以看出A的大小只有4

就能发现,类B跟类A在空间独立的,只是受A的类域限制

另外,如果内部类是共有的就可以直接使用,若是私有的就不能使用了,说明内部类也受访问限定符的限制

内部类天生是外部类的友元

编译器的一些优化

这就是一部分优化

若是使用引用传参,则都不会进行优化

至于为什么要加const是因为当传第二个参数2时,会先产生一个临时对象,这个临时对象具有常性,所以使用引用传参时才需要加上const

还有这些优化

同一个程序,写法不同优化程度也就不同

总结:

1、接受返回值时尽量拷贝构造接收,不要赋值接收

2、函数中返回对象时,尽量返回匿名对象

C++ Friend 友元机制 友元函数(Friend Function)是一种定义在类外部的普通函数,但通过在类定义中用friend关键字声明,使其能够访问该类的所有成员,包括私有和保护成员。友元函数不是类的成员函数,在调用时不需要通过对象实例。// 私有成员public:// 声明普通函数 FriendFunc 为友元函数// 友元函数的定义(注意它不是类的成员函数)// 可以直接访问 MyClass 的私有成员友元类(Friend Class)是指一个类将另一个类声明为自己的友元。 阅读详情

相关推荐

模电专题-MOS管的放大电路分析

在实际应用中,我们经常会使用到功率MOS,这时通常不会将它当成一个开关使用,而是当成一个放大器来使用,那这就需要让其工作在放大状态。参考下图中的mos管的特性曲线,右图中的输出特性曲线中有一根红色的分界线,这个线就是区分mos管工作状态的分界线,在红线的左边,mos管工作在可变电阻区,也就是线性区;在红线的右边mos管工作在恒流区,也就是饱和区。当然,还有一个截止区。本文分析主要运用模电课本中的理论计算验证。

Anitawen的博客 2万+

C++ 友元类

1.在C++中,我们使用类对数据进行了隐藏和封装,类的数据成员一般都定义为私有成员,成员函数一般都定义为公有的,以此提供类与外界的通讯接口。但是,有时需要定义一些函数,这些函数不是类的一部分,但又需要频繁地访问类的数据成员,这时可以将这些函数定义为该函数的友元函数。除了友元函数外,还有友元类,两者统称为友元。友元的作用是提高了程序的运行效率(即减少了类型检查和安全性检查等都需要时间开销),但它破坏了类的封装性和隐藏性,使得非成员函数可以访问类的私有成员。 2.友元类 : 友元类的所有成员函数都是另一个类的友

weixin_43107240的博客 4万+

如何把Excel的数据导入python?

Python数据分析——excl导入数据的简单方法(xlrd) 本文的初衷是发现网上很多Excel导入Python都没有结合具体Excel文档进行讲解,所以这篇文档将会呈现一个简单快速的Excel+Python的入门方法。 开发环境 Prerequisites: 在开始用Python导入Excel之前,要配置好自己的开发环境,最好有IDE(terminal也可)+安装相应的数据分析包。 IDE :pycharm,vscode,etc 数据分析包:matplotlib,xlrd,numpy,etc 导入数

qq_40783513的博客 7万+

C++中的友元

C++中的友元友元的概念引入友元的分类类的非成员函数友元类的成员函数友元类友元友元的特点友元说明 友元的概念引入 C++的最重要的特点之一就是封装性和继承性。对于类的封装性来说,就是类的私有成员和保护成员只能在设计类时它所定义的函数内使用,即私有成员和保护成员只能通过该类的成员函数来访问。 当我们需要在类的外部访问该类的私有成员和保护成员时,就可以利用友元(**friend**)来实现这一操作。 友元的分类 类的非成员函数友元 类的非成员函数友元: 表示友元函数不是当前类的成员函数,而是独立于当前类

qq_44423388的博客 550

WPF+MVVM案例实战(一)- 设备状态LED灯变化实现

采用WPF+MVVM框架实现,MVVM框架使用CommunityToolkit.Mvvm 依赖包,代码案例部署了三个LED灯,按照红黄绿三色后台自动刷新状态进行变化,根据后台数据不同,UI层显示不同颜色。

lingshuangcanxue 1382

【更新中260712】CRAIC中国机器人及人工智能大赛-机器人应用赛-智能产线赛项-备赛指南

2025年第二十七届中国机器人及人工智能大赛现已闭幕结合我小组自身备赛情况及见闻感悟,现整理成章。

EDUCN 938

C++ 友元

C++ 友元1. 何为友元2. 同类对象之间无隐私3.异类对象之间有友元3.1 友元函数3.1.1 全局函数作友元函数3.1.2 类成员函数作友元函数3.2 友元类4. 小结4.1 声明位置4.2 友元利弊4.3 注意事项 1. 何为友元 采用类的机制后实现了数据的隐藏与封装,类的数据成员一般定义为私有成员,成员函数一般定义为公有的,依此提供类与外界间的通信接口。但是,有时需要定义一些函数,这些函数不是类的一部分,但又需要频繁地访问类的数据成员,这时可以将这些函数定义为该类的友元函数。除了友元函数外,还有友

qq_43414070的博客 1590

【Altium designer】如何添加过孔阵列

按下图1指示,执行【Tool】菜单栏下【Via Stitching/Shielding】选项卡中的【Add Stitching to Net...】选项 图1 “添加过孔阵列”选项 点击【Add Stitching to Net...】选项后,会跳出一个窗口,让我们设置过孔阵列的参数信息,如下图2所示。 图2 过孔阵列参数设置 过孔阵列区域:勾选该选项框,即可绘制多边形区域; 过孔内径与焊盘直径:比如内径 【Hole Size】设为12mil,焊盘直径【Diameter】设为24mil; .

夜半少年的博客 2万+

C++友元详解

友元介绍

m0_73803550的博客 8081

FPGA实现PID算法

PID 控制器表达式如下(引用某硕士论文 《基于FPGA的PID控制器研究与实现》): 其中,Kp为比例增益,Ti为积分时间常数,Td为微分时间常数,u(t)为控制量,e(t)为偏差。 在数字控制系统中,PID控制规律的实现必须用数值逼近的方法。当采样周期相当短时,用求和代替积分、用后向差分代替微分,使模拟PID离散化变为差分方程。 本文使用并行结构来实现。具有延时小,计算速度快的特点,但需要资源比较多。 利用图3.2所示并行结构实现方法 ,进一步将3.8式分解: ...

nxin168的博客 1万+

制作3D地形图的方法-使用GlobalMapper和3ds Max软件

打开GlobalMapper软件,在菜单栏中选择“文件”>“打开数据文件”,然后选择相应的高程数据文件。在菜单栏中选择“渲染”>“渲染设置”,根据需要进行设置,如分辨率和输出格式。选择地形对象,点击菜单栏中的“渲染”>“材质编辑器”,然后根据需要调整材质属性,如颜色、纹理和光照等。在菜单栏中选择“工具”>“高程栅格和网格”>“创建地形网格”。在菜单栏中选择“文件”>“导出”>“导出栅格格式”。打开3ds Max软件,在菜单栏中选择“文件”>“导入”,然后选择之前导出的地形数据文件。步骤3:导出地形网格。

JqlScala的博客 1535

C++ 友元机制

在 C++ 编程世界中,友元机制是一项独特且强大的功能,它赋予了特定函数或类访问其他类私有成员的权限,突破了常规的访问限制。使用不当,则会给代码带来一系列隐患。例如,在实现游戏引擎的 3D 渲染时,允许 Matrix 类直接访问 Vector 的私有数据(数学计算优化)属于合理使用;日常开发应优先使用常规工具(公共接口),只有遇到必须突破封装的情况时才谨慎使用友元,并做好安全防护。要记住,每增加一个友元,就是给系统增加一个潜在入口,必须如履薄冰地管理。通用的业务系统,追求稳定性和通用性,如公共图书馆系统。

2401_84228999的博客 1857

Pyhon在振动信号处理中的高级应用(一):振动信号特征(时域、频域)提取

文章目录一、概述二、算法原理2.1 时域统计特征三、python代码实现 一、概述 二、算法原理   这里我们借鉴西安交通大学机械学院雷教授的论文《Fault diagnosis of rotating machinery based on multiple ANFIS combination with GAs》相关研究成果。雷教授在论文中共列举了4类共24种振动信号的时域和频域特征。 2.1 时域统计特征 p1=∑n=1Nx(n)NP2=∑n=1N(x(n)−p1)2N−1p3=(∑n=1N∣x(n)∣N

白银时代的博客 1万+

C++ 友元

友元友元 英文 friend。friend 翻译成中文就是朋友,翻译成术语就是:友元。朋友就很好理解了,我的钱你随便花,我的东西你随便用;当然我也是你的朋友,你的钱我随便花,你的东西我随便用。当然在 C++ 里,类与类 之间可以作为友元,那么这个类就可以去操作另外一个类里面私有的成员;函数与函数 之间也可以作为 友元,所以友元分为: 友元函数 和 友元类。我们通过一个例子一看就明白了:写代码#inc

AoboSir.com 1万+

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

10 C++ 友元

C++友元机制摘要 友元(friend)允许外部函数或类访问当前类的私有和保护成员,主要分为友元函数、友元类和友元成员函数三种类型。关键特性包括: 单向非传递:友元关系不可逆且不传递 灵活声明:可在类任意位置声明,不受访问控制符限制 典型应用:运算符重载(如<<)、跨类数据共享、单元测试 优势在于提供高效访问和自然语法,但会破坏封装性。建议优先使用成员函数,仅在必要场景(如流操作符重载)使用友元,并严格限制友元范围。 示例场景:设备控制器(友元类)访问设备温度数据(私有成员)

17208955的博客 1680

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

C++友元类

友元类 不仅可以将一个函数声明为一个类的“朋友”,还可以将一个类(例如 B类)声明为另一个类(例如 A类)的“朋友”。这时B类就是A类的友元类。友元类B中的所有函数都是A类的友元函数,可以访问A类中的所有成员。 声明友元类的一般形式为: friend class 类名; 所以,可以在A类的定义体中,可以使用如下语句声明B类为其友元类: friend class B; 那么,类B是类A的友元类。所以,类B的成员函数就可以访问类A的私有成员。 ...

LC的专栏 7397

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

C++ 中的友元

关于友元关系:在C++中,友元(Friend)功能是一个相对特殊的概念,允许某些特定的函数或其他类访问当前类的私有(private)或受保护(protected)成员。友元功能是C++中用于特定情况下实现类之间数据访问的机制。优点:打破类的封装,广泛应用于操作符重载缺点:破坏了类的封装,类之间互相依赖,代码高度耦合,头文件,类声明,粉墨登场,没有固定设计模式,难以设计友元的4种主要类型:1 友元函数:友元函数可以是任何普通函数。它被允许访问某个类的所有成员(包括私有和受保护)。

抟土成人祖,炼石补青天。眼中览银河,手可摘星辰。 500

c++类——友元

如有兴趣了解更多请关注我的个人博客。

xiaohei07的博客 2138
上一篇: const修饰的成员,静态成员和匿名对象
下一篇: C++内存管理
宴之敖者、
博客等级 码龄4年 131粉丝 45原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值