需要友元的原因及使用

亚马逊广告接口 amazon advertising 亚马逊广告接口官方说明:https://advertising.amazon.com/API/docs/en-us/setting-up/account-setup 一:注册aws开发者账号 注册地址:https://developer.amazon.com 二:填写注册资料 三:进入控制台,生成安全配置文件 进入 Login with Amazon 菜单: 创建配置文件: 四:申请广告接入权限 申请地址:https://advertising.amazon.com/zh-cn/about-api 阅读详情

需要友元的原因及使用

有时候,普通函数需要直接访问一个类的保护或私有数据成员。如果没有友元机制,则只能将类的数据成员声明为公共的,从而,任何函数都可以无约束的访问它。

普通函数需要直接访问类的保护或私有数据成员的原因主要是为提高效率。

在类里声明一个普通函数,标上关键字friend,就成了该类的友元,可以访问该类的一切成员。

需要友元的另一个原因是为了方便重载操作符的使用。

友元函数不是成员函数,它是类的朋友,因而能够访问类的全部成员。在类的内部,只能声明它的函数原型,加上friend关键字。友元声明的位置可以在类的任何部位,既可在public区,也可在protected区,意义完全一样。友元函数定义则在类的外部,一般与类的成员函数定义放在一起。因为类重用时,一般友元是一起提供的。

一个类的成员函数可以使另一个类的友元。

整个类可以是另一个类的友元,该友元成为友类。友类的每个成员函数都可访问另一个类中的保护或私有数据成员。

友元的作用主要是为了提高效率和方便编程。但随着硬件性能的提高,友元的这点作用是微不足道的。相反,友元破坏了类的整体操作性,也破坏了类的封装,所以在使用时,要权衡利弊。

【26美赛F题 To Gen-AI, or Not To Gen-AI】(MCM/ICM)思路解析及代码分享 摘要:本文研究生成式人工智能(Gen-AI)对三类职业(STEM、技能型工艺、艺术)的影响,建立量化模型预测未来10-20年岗位需求变化。通过分析AI替代效应($R_{sub}(t)$)和增强效应($R_{enh}(t)$),提出差异化高校课程调整策略:STEM专业需加强AI集成能力,技能型工艺专业应结合智能工具与实操训练,艺术专业需平衡AI创作辅助与原创性培养。模型表明,高校通过针对性课程优化可提升毕业生在AI时代的就业竞争力,为教育决策提供数据支持。(149字) 阅读详情

相关推荐

STM32F103+W5500网络通信

STM32F103+W5500网络通信一、W5500模块(一)W5500以太网模块介绍(二)模块排针功能表二、 modbus协议(一)modbus协议原理(二)Modbus 通讯方式1.Modbus三种通讯方式2.在Modbus网络上传输3.以太网(modbus tcp/ip)三、参考资料 一、W5500模块 (一)W5500以太网模块介绍 D-W5500 EVB以太网模块是一款基于WIZnet W5500芯片的以太网模块,且性价比高的以太网模块。W5500是一款全硬件TCP/IP嵌入式以太网控制器,为

”一只特立独行的猪“的博客 1万+

如何正确理解友元(最全解释)

1.为什么要使用友元:类的主要特点之一是数据的隐蔽和封装,即类的私有成员只能在类定义到范围内使用,也就是说只能通过它的成员函数来访问。但是,有时为了访问类的私有成员而需要在程序中多次调用成员函数,这样会因频繁调用带来较大时间和空间的开销,从而降低程序的运行效率。可以换句话说:c++中的友元为数据隐藏这堵不透明的墙开了一个小孔,外界可以通过这个小窥伺类的内部秘密,友元是一扇通向私有成员的后门。但是友元函数也有弊端: 如果一个类声明了许多的友元函数,则相当于在黑盒子上开了许多洞,显然这将破坏数据的隐蔽性和类的

weixin_61855819的博客 2232

深入解析YT8521S千兆以太网PHY芯片的设计与调试要点

本文深入解析了YT8521S千兆以太网PHY芯片的设计与调试要点。重点剖析了硬件设计中的电源方案、RGMII接口电平配置(尤其是1.8V电平方案)以及PCB布局布线等关键细节,并提供了从硬件检查、驱动配置到性能测试的完整调试流程,帮助工程师规避常见陷阱,实现稳定可靠的千兆网络连接。

weixin_29190573的博客 687

C++中友元【详细讲解】

本篇文章主要讲述了友元的概念及其使用,文章中含有实例代码,希望读者可以自己动手实现一下,有助于理解友元的相关知识。

weixin_45688108的博客 1846

【天线与电波传播】电波传播部分 第7章 电波传播的基础知识3

菲涅尔区与菲涅尔带的基本知识

Chen59_2328的博客 1601

halcon C++编程 第4讲 HObject/HImage Mat相互转换(tcy)

网上有很多相互转换程序,但并不知那个正确,本文对相互转换后的结果和原对象比较是否相同判断转换是否正确。经测试ok.本文包括转换代码及测试是否相同。 1.转换程序: /************************************ HObject转为Mat:time:2021/3/16 V1.0 *************************************/ cv::Mat HalconClass::HObjectToMat(const HalconCpp::HObject&..

tcy-阿春 4932

C++之中的友元函数的作用

友元提供了不同类的成员函数之间、类的成员函数与一般函数之间进行数据共享的机制。通过友元,一个不同函数或另一个类中的成员函数可以访问类中的私有成员和保护成员。c++中的友元为封装隐藏这堵不透明的墙开了一个小孔,外界可以通过这个小孔窥视内部的秘密。友元的正确使用能提高程序的运行效率,但同时也破坏了类的封装性和数据的隐藏性,导致程序可维护性变差。 友元函数 :友元函数是可以直接访问类的私有成员的非成员函

andrewbytecoder 2万+

基于QT+Halcon实现线序识别

一、线序识别算法步骤。 1.按照检测区域m_pItem1的外接矩形(rtBount)的大小, 截取感兴趣区域图像hRoi。 2.把截取出来的感兴趣区域图像hRoi, 分离出R、G、B三个通道hRed、hGreen、hBlue。 3.把hRed、hGreen、hBlue三个通道转换成cielab颜色空间, 得到hChannelL、hChannelA、hChannelB三个颜色图。 4.设m_pItem1的宽为iItemW, 高为iItemH. 分别申请大小为iItemW的pSumL、pSumA、pSumB内

专注现代C++实战,从核心语法到高性能编程,助力开发者深入掌握系统级编程精髓。 1748

类的友元

一、介绍 1. 引入友元的原因:属性变量是private类型,在类的外部是不能直接用 对象 . 属性 的方式访问的,用接口函数的方式获取数据会占用更多的内存,降低效率。 2. 友元关系:一个类主动声明自己的朋友类、朋友函数,特许他们访问本类的数据。于是,在友元函数中可以直接用对象 . 属性的方式访问。它适用于外界同时需要多个对象的私有属性,比如,求两点间距,而两点各为一个对象。 例:clas...

floracuu的博客 1501

【GlobalMapper精品教程】027:路径剖面和和视线工具的使用

路径剖面视线工具允许您使用加载的高程数据集沿用户指定的路径获取垂直剖面。要定义生成3D路径剖面所遵循的路径,只需单击鼠标左键选择路径的点,然后石键单击以结束路径。出现一个带有剖面的对话框,允许您设置视线分析或优化端点。

智慧空间实验室 2048

Qt软件开发-Qt编译zlib完成文件压缩解压(win10)

在软件开发中进行有需求需要将生成的一些文件打包上传到服务器,或者从服务器下载压缩包下来内部解压。或者自己做一些打包工具,那么使用zlib开源就可以很方便的完成。接下来介绍在zlib在windows下如何利用Qt进行编译,调用,介绍mingw、msvc,32/64位编译办法,完成zip文件打包生成例子。可以单文件压缩打包,多文件压缩打包,目录压缩打包等等。

2216

C++面向对象(OOP)编程-友元(友元函数和友元类)

本文主要介绍面向对象编程的友元的使用,以及友元的特性和分类,提供C++代码。

发狂的小花的博客 1408

Chamfer Loss

ChamferLoss是一种常用于3D点云(pointcloud)处理的损失函数,特别是在点云生成和对齐任务中。它的目的是度量两个点集之间的相似度,特别是在点云重建、配准或生成等任务中,常用于优化模型使得生成的点云更接近真实的点云。

夜空中明亮的星的专栏 455

C++入门自学Day4-- c++类与对象(友元)

本文回顾了C++类与对象相关知识点,重点介绍了友元机制。友元通过friend关键字声明,允许外部函数或类访问类的私有成员,主要形式包括友元函数、友元类和友元成员函数。文章详细讲解了这三种形式的实现方法,特别是运算符重载的友元实现方式。同时指出友元具有单向性、非继承性等特点,会破坏封装性,应谨慎使用。还介绍了内部类作为天生友元的概念,最后总结了友元机制的优缺点和使用注意事项,强调其作为"例外访问权"应合理使用,避免破坏代码封装性。

JJOHJHOUJ的博客 1070

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

【C++ 面试真题】16. 聊聊 C++ 的 friend(友元)

友元是 C++ 封装机制上的一个"后门"——`private` 本来谁都不让碰,friend 偏偏给某个外部函数或类开一张通行证。背得出"friend 能访问私有成员"只是及格,真考你的是"**友元算不算成员、它单不单向、传不传递、继不继承、为什么 operator<< 非得用友元、它又是怎么破坏封装的**"。本篇把友元一次讲透,也是面向对象篇的收官。

码工许师傅 635

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

C++从入门到实战(九)类和对象(第五部分)利用简答的代码详细讲解C++初始化列表,类型转换与友元

在上一节的博客中,我们深入探讨了运算符重载的核心机制,通过自定义赋值运算符和取地址运算符,掌握了如何让类对象的操作更符合直觉。从深拷贝的实现到 const 成员函数的应用,这些内容帮助我们构建了更健壮的类设计。我的个人主页,欢迎来阅读我的其他文章我的C++知识文章专栏欢迎来阅读指出不足在这一节中,我们将进一步解锁类的底层实现技巧,下面我将利用利用简答的代码详细讲解C++初始化列表,类型转换与友元在C++中,类的成员(比如变量和函数)通常被封装起来,只能通过类的接口(比如公有成员函数)来访问。

2402_83322742的博客 1474

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

4、友元

1、C++为什么引入友元概念? 由于面向对象编程提倡“隐藏”,因此一个类或一个全局函数只能通过成员函数通过访问另一个类的私有成员。但是有些时候,两个类之间的关闭十分密切,如果只能通过成员函数访问另一个的成员变量的话很麻烦(尤其是对于习惯于C语言编程的程序员来讲)。因此,兼顾“隐藏”和方便,C++引入了一个折中的方案。便是友元。即,可以在一个类中将另外一个类另外一个类的成员函数或者是一个全局函数声明...

江南又一春 1110

11 使用类(类设计技术)

文章目录1 运算符重载1.1 重载举例1.2 重载限制1.2.1 有的运算符只能通过成员函数重载?2 友元2.1 引入原因2.2 创建友元2.2.1 重载<<运算符2.2.1.1 版本一:必须使用友元函数2.2.1.2 版本二:返回ostream引用对象2.2.2 成员与非成员的选择3 类的自动转化和强制类型转换? 轻松地使用这种语言。不要觉得必须使用所有的特性,不要在第一次学习时就试图使用所有的特性 1 运算符重载 operatorop(argument -list) 注意op必须是有效的

weixin_43906948的博客 1041

C++ 友元

为什么使用友元? 例如:求两点之间的距离 #include <iostream> #include <cmath> class Point //Point类声明 { public: //外部接口 Point(int x=0, int y=0) : x(x), y(y) { } int getX() { ...

weixin_30586257的博客 173

【34.1】C++友类及重载

友元的两种使用形式-使用全局函数作为友元函数

每天一点小进步~ 242

友元函数和友元类(friend)

关键字 friend(破坏了类的封装性) class MyFriend { //友元类(破坏了类的封装性) friend class MyClass; public: MyFriend(int a=0, int b=0) { m_a = a; m_b = b; } //友元函数通过对象参数访问私有数据成员 friend void FriendFun(MyFriend *f...

代码黑洞 1066

友元和static类成员

1、友元机制允许一个类将其非公有成员的访问权授予指定的函数或类,友元的声明以关键字friend开始,它只能出现在类定义的内部。 如:class Screen{         //Window_Mgr must be defined before class Screen        friend Window_Mgr&  Window_Mgr::relocate(Window_Mgr::

mdtkzc的专栏 655

C++友元重载+运算符易错点

我今天晚上复习C++类的用法,在使用友元重载双目运算符+的时候,出现了一个诡异的错误.百思不得其解,专门重写一个类进行测试,最后发现了原因.猛然想起我之前也犯过这样的错误,以为经典,故记之.   奉上错误代码: #include using namespace std; class Complex { //一个复数类 public: Complex () {} /

姬小野的博客 2822
上一篇: C++类的静态成员详细讲解
下一篇: struct 与 typedef struct
大老鼠
博客等级 码龄15年 14粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值