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

友元的介绍

实现外部类和外部函数存取类的私有成员和保护成员的方法。
一、友元函数
可访问类所有成员的外部函数

//求两点间的距离:抽象点——>求距离的函数 
#include<iostream>
#include<cmath> 
using namespace std;
class Point{private:double x,y;public:Point(double x1,double y1):x(x1),y(y1){	}void show(){cout<<"("<<x<<","<<y<<")"<<'\t'<<endl;}friend double Distance(Point &,Point &);
};
double Distance(Point &p1,Point &p2){//外部函数 double dx=p1.x-p2.x;//访问类中私有成员, 声明为友元函数才可 double dy=p1.y-p2.y;//直接访问私有成员 return sqrt(dx*dx+dy*dy);
}
int main()
{Point p1(3,2),p2(9,10);//实例化两个点对象 cout<<"两点间的距离:"<<Distance(p1,p2)<<endl;//调用求距离函数 
}

二、友元成员函数
可访问类所有成员的外部类的成员函数

//根据两点坐标差构造一个矩形类 
#include<iostream>
using namespace std;
class Point;//声明要访问的类 
class Rectangle{//外部类 private:double length,width;public:Rectangle(double l,double w):length(l),width(w){}//直接赋长宽属性 Rectangle(Point &,Point &);//为了得到长宽,需要访问两点的位置信息-Rectangle类中的成员函数访问另一个类中的私有成员信息,将此函数在另一个类中声明为友元函数 void show(){cout<<"长:"<<length<<"\t宽:"<<width<<"\t周长:"<<2*(length+width)<<"\t面积:"<<length*width<<endl;}
};
class Point{//要访问的类 private:double x,y;public:Point(double x1,double y1):x(x1),y(y1){	}//friend Rectangle::Rectangle(Point &,Point &);//声明友元成员函数: void show(){cout<<"("<<x<<","<<y<<")"<<'\t'<<endl;}
};
Rectangle::Rectangle(Point &p1,Point &p2)//通过两点位置,求长宽赋值给属性(通过构造函数求矩形类的长和宽,赋给类中的属性) 
:length(p1.x>p2.x?p1.x-p2.x:p2.x-p1.x),
width(p1.y>p2.y?p1.y-p2.y:p2.y-p1.y){}
int main() 
{Point a(1,2),b(3,4);Rectangle r1(a,b);//通过点位置构造 Rectangle r2(2,3);//直接赋值构造 r1.show();r2.show();
}

注:此时外部类要定义在访问类之前,否则会报错。

三、友元类
友元类的所有成员均为该类的友元函数
friend class 友元类名;//声明友元类
小结:均不具有传递性与对称性。

相关文章:

友元的介绍

实现外部类和外部函数存取类的私有成员和保护成员的方法。 一、友元函数 可访问类所有成员的外部函数 //求两点间的距离&#xff1a;抽象点——>求距离的函数 #include<iostream> #include<cmath> using namespace std; class Point{private:double x,y;publ…...

新手如何找到Docker容器(redis)中的持久化文件?

具体步骤 要查看Docker容器的dump.rdb和appendonly.aof文件&#xff08;如果启用了AOF持久化&#xff09;的位置&#xff0c;我们需要知道容器中Redis配置文件的内容或者容器的数据卷的挂载位置。 这里是一般步骤&#xff1a; 查找容器的数据卷挂载位置 使用docker inspect命令…...

python二次开发Solidworks:读取立方体的高度

在SW中新建一个零件文档&#xff0c;建立一个立方体&#xff0c;长度和宽度自定义&#xff0c;高度100mm&#xff0c;下面通过python实现读取该立方体的高度&#xff1a; import win32com.client as win32 import pythoncomswApp win32.Dispatch(sldworks.application) swApp.…...

NPM安装后报错:ERROR: npm v10.2.1 is known not to run on Node.js v10.24.1.

问题描述 NPM卸载高版本后安装低版本运行报错&#xff1a; C:\Users\Administrator>npm -v ERROR: npm v10.2.1 is known not to run on Node.js v10.24.1. This version of npm supports the following node versions: ^18.17.0 || >20.5.0. You can find the latest…...

【Vue】Element开发笔记

Element开发笔记 前言 官网 https://element.eleme.cn/#/zh-CN/component/upload 其它项目网站 https://www.cnblogs.com/qq2806933146xiaobai/p/17180878.html 表格 序号列添加 <el-table-column type"index" :index"handleIndexCalc" label&qu…...

How to install mongodb 7.0 to Ubuntu 22.04

How to install mongodb 7.0 to Ubuntu 22.04 1、安装1.1、添加gpg1.2、添加apt源1.3、更新1.4、安装 2、管理2.1、服务管理2.1.1、查看服务状态2.1.2、启动服务2.1.3、 设置服务为开机启动2.1.4、取消服务开机启动2.1.5、关闭服务2.1.6、服务重启 2.2、mongosh2.2.1、进入mong…...

AFL安全漏洞挖掘

安全之安全(security)博客目录导读 ATF(TF-A)/OPTEE之FUZZ安全漏洞挖掘汇总 目录 一、AFL简介 二、AFL的安装 三、代码示例及种子语料库 四、AFL插桩编译 五、AFL运行及测试 六、AFL结果分析 一、AFL简介 模糊测试&#xff08;Fuzzing&#xff09;技术作为漏洞挖掘最有…...

ES6 let const var和解构赋值

1.let/const和var的区别 1.变量提升&#xff1a;var会发生变量提升&#xff0c;let和const不存在变量提升 2.暂时性死区&#xff1a;变量声明之前变量不可用称为暂时性死区。var不存在&#xff0c;let和const存在暂时性死区 3.typeof 不再是百分百不会报错&#xff1a;let声…...

03、MySQL-------数据库中间件MyCat实现读写分离

目录 八、数据库中间件MyCat实现读写分离1、克隆&#xff1a;2、配置分析&#xff1a;1、schema.xml2、启动mycat&#xff1a;3、关闭防火墙&#xff1a;4、代码测试&#xff1a;测试写入&#xff1a;测试读&#xff1a;强制读Master 八、数据库中间件MyCat实现读写分离 作用&…...

虹科活动 | 探索全新AR应用时代,虹科AR VIP研讨会广州场回顾!

文章来源&#xff1a;虹科数字化AR 阅读原文&#xff1a;https://mp.weixin.qq.com/s/7tmYR42Tw5XLn70fm8Nnew 主题演讲 本次研讨会&#xff0c;虹科特邀 “工业AR鼻祖” 美国Vuzix公司的首席应用工程师郑慎方先生进行主题演讲&#xff0c;并邀请到了各界的专业人士和企业代表参…...

非科班,补基础

大家好&#xff0c;我是大彬~ 今天跟大家分享知识星球小伙伴关于【非科班转码如何补基础】的提问。 往期星球提问整理&#xff1a; 读博&#xff1f;找工作&#xff1f; 性格测试真的很重要 想找一份实习工作&#xff0c;需要准备什么 球友提问&#xff1a; 大彬大佬&#xf…...

安全性与合规性:IT运维的双重守护

在当今数字化时代&#xff0c;信息技术&#xff08;IT&#xff09;已深入渗透到企业的各个层面。随着数据和技术的不断发展&#xff0c;IT运维安全性和合规性逐渐成为了企业运营的两大核心要素。它们不仅保障了企业数据的安全&#xff0c;更维护了公司的声誉和客户信任。本文将…...

session 反序列化

原理详解 ctfshow web 263 ctfshow 新手杯 剪刀石头布 这里我们可以发现服务器使用的处理器为php_serialize&#xff0c;与当前页面处理器不同&#xff0c;在反序列化的时候会造成一些问题。同时cleanup配置没开&#xff0c;关闭了session自动清理&#xff0c;所以我们不需要…...

PostgreSQL中实现数学中的组合问题

记得在学《数值分析》这门课程时,其中有排列组合的相关计算。最近没有想到,自己居然在编程上需要了这个问题,需要在数据库的一张表中,找出任意n条记录的组合,判断组合后的图形是什么,也就是组合问题。从网上搜索的相关资料,发现很多是在Java或者python代码实现的。因为数…...

编译和连接

前言&#xff1a;哈喽小伙伴们&#xff0c;从我们开始学习C语言到实现如今的成果&#xff0c;可以说我们对C语言的掌握已经算是精通级别了&#xff0c;但是我们只学习了怎么写代码&#xff0c;却没怎么了解过代码的背后是怎么工作的。 那么今天这篇文章我们一起来学习C语言的最…...

常见分布整理

概率论 - 常见分布&#xff08;及其分布表&#xff09; 常见分布的期望和方差 离散型分布 两点分布 有2种结果&#xff0c;实验只做1次 X~b(1,p)则有 P(X k) pk (1-p)1-k,k 0, 1 数学期望&#xff1a;E(X) p 方差&#xff1a;D(X)p(1-p) 二项分布 P(A) p&#xff0…...

ubuntu终端命令行下如何使用NetworkManager(netplan)来配置wifi网络

最近在给家里折腾一个文件共享服务器给家里的小米摄像头保存监控视频用。树莓派太贵了&#xff0c;找来找去发现香橙派orangepi zero3 是最低成本的替代解决方案&#xff08;网络足够快&#xff0c;CPU的IO能力足够强&#xff09;&#xff0c;香橙派orangepi zero3的操作系统是…...

GO学习之 goroutine的调度原理

GO系列 1、GO学习之Hello World 2、GO学习之入门语法 3、GO学习之切片操作 4、GO学习之 Map 操作 5、GO学习之 结构体 操作 6、GO学习之 通道(Channel) 7、GO学习之 多线程(goroutine) 8、GO学习之 函数(Function) 9、GO学习之 接口(Interface) 10、GO学习之 网络通信(Net/Htt…...

CUDA学习笔记5——CUDA程序错误检测

CUDA程序错误检测 所有CUDA的API函数都有一个类型为cudaError_t的返回值&#xff0c;代表了一种错误信息&#xff1b;只有返回cudaSuccess时&#xff0c;才是成功调用。 cudaGetLastError()用来检测核函数的执行是否出错cudaGetErrorString()输出错误信息 #include <stdi…...

虹科 | 解决方案 | 机械免拆压力测试方案

对于发动机的气门卡滞或气门开闭时刻错误、活塞环磨损、喷油嘴泄漏/堵塞等故障&#xff0c;往往需要解体发动机或拆卸部件才能发现&#xff1b;而对于某些轻微的故障&#xff0c;即使解体了发动机后也经常难于肉眼判别 虹科Pico提供的WPS500压力测试方案&#xff0c;可以动态测…...

自学渗透测试第23天(漏洞分类与sql注入模仿)

第9章 服务配置与工具链联动&#xff08;第23–25天&#xff09;9.1 漏洞分类与SQL注入模仿&#xff08;第23天&#xff09;核心目标掌握Web漏洞分类体系&#xff1a;理解OWASP TOP 10漏洞分类&#xff0c;建立系统化的漏洞认知框架。精通手工SQL注入流程&#xff1a;超越自动化…...

2026科技风向标:大模型、Agent、具身智能,谁将引领AI新纪元?

2026 年&#xff0c;谁的主场&#xff1f; 作为顶流的 OpenAI&#xff0c;在 2025 年经历了阵痛与转型。一方面&#xff0c;其维持着通用大模型能力的上限位置&#xff0c;其模型在推理、代码、多模态等多个维度持续作为行业对标对象&#xff1b;另一方面&#xff0c;GPT-5 的…...

Windows系统终极优化指南:如何用一款工具解决所有管理难题

Windows系统终极优化指南&#xff1a;如何用一款工具解决所有管理难题 【免费下载链接】winutil Chris Titus Techs Windows Utility - Install Programs, Tweaks, Fixes, and Updates 项目地址: https://gitcode.com/GitHub_Trending/wi/winutil 如果你正在寻找一款能够…...

【VSCode 2026大模型插件开发终极指南】:涵盖LLM本地推理、RAG集成、智能调试与生产级发布全流程

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;VSCode 2026大模型插件开发全景概览 随着大语言模型&#xff08;LLM&#xff09;在开发者工具链中的深度集成&#xff0c;VSCode 2026 版本正式将 LLM 原生能力纳入核心扩展平台&#xff0c;提供统一的…...

终极图像处理指南:5分钟掌握Fiji科学图像分析技巧

终极图像处理指南&#xff1a;5分钟掌握Fiji科学图像分析技巧 【免费下载链接】fiji A "batteries-included" distribution of ImageJ :battery: 项目地址: https://gitcode.com/gh_mirrors/fi/fiji Fiji&#xff08;Fiji Is Just ImageJ&#xff09;是一款开…...

顶会论文模块复现与二次创新:2026极简网络趋势:StarNet 星操作(元素级乘法)替换复杂卷积模块的有效性实验

写在前面 2026年的计算机视觉领域正在经历一场“返璞归真”的深刻变革。在Transformer架构狂飙数年之后,研究者们逐渐意识到:复杂的自注意力机制并非唯一解,简单而优雅的纯卷积网络正以全新姿态强势回归。2026年4月19日,一篇题为《Attention Is not Everything: Efficient…...

别再死记硬背公式了!用DCM模式反激电源设计,手把手教你搞定变压器漏感与尖峰吸收

DCM模式反激电源设计实战&#xff1a;从漏感机理到尖峰吸收方案优化 反激电源作为开关电源家族中最具性价比的隔离方案&#xff0c;在消费电子、工业控制和物联网设备中占据着重要地位。但许多工程师在初次设计时&#xff0c;常被MOSFET开关波形上的诡异振铃、难以预测的电压尖…...

量子储层计算在对抗鲁棒性中的优势与应用

1. 量子储层计算与对抗鲁棒性研究概述量子储层计算&#xff08;Quantum Reservoir Computing, QRC&#xff09;是近年来量子机器学习领域兴起的一种新型计算范式。与传统的变分量子电路不同&#xff0c;QRC的核心思想是利用量子多体系统固有的高维非线性动力学特性作为"计…...

Mac微信防撤回插件:专业级消息保护方案

Mac微信防撤回插件&#xff1a;专业级消息保护方案 【免费下载链接】WeChatIntercept 微信防撤回插件&#xff0c;一键安装&#xff0c;仅MAC可用&#xff0c;支持v3.7.0微信 项目地址: https://gitcode.com/gh_mirrors/we/WeChatIntercept 微信消息撤回功能虽然保护了发…...

从氢气瓶安全泄放到工业阀门选型:恒容容器瞬时流量计算的3个实战要点

氢气安全泄放与工业阀门选型的工程实践指南 在化工、能源和制造领域&#xff0c;压力容器的安全泄放系统设计直接关系到人员安全和设备可靠性。以氢气储罐为例&#xff0c;当内部压力超过安全阈值时&#xff0c;如何准确计算泄放流量并据此选择阀门规格&#xff0c;是每位工艺工…...