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

第十五章 类和对象——友元

生活中你的家有客厅(Public),有你的卧室(Private)

客厅所有来的客人都可以进去,但是你的卧室是私有的,也就是说只有你能进去

但是呢,你也可以允许你的好闺蜜好基友进去。

在程序里,有些私有属性 也想让类外特殊的一些函数或者类进行访问,就需要用到友元的技术。

友元的目的就是让一个函数或者类 访问另一个类中私有成员。

友元的关键字为 friend

友元的三种实现

  • 全局函数做友元

  • 类做友元

  • 成员函数做友元

一、全局函数做友元

 class Building{//告诉编译器 goodGay全局函数 是 Building类的好朋友,可以访问类中的私有内容friend void goodGay(Building * building);​public:​Building(){this->m_SittingRoom = "客厅";this->m_BedRoom = "卧室";}​​public:string m_SittingRoom; //客厅​private:string m_BedRoom; //卧室};​​void goodGay(Building * building){cout << "好基友正在访问: " << building->m_SittingRoom << endl;cout << "好基友正在访问: " << building->m_BedRoom << endl;}​​void test01(){Building b;goodGay(&b);}​int main(){​test01();​system("pause");return 0;}

二、类做友元

 class Building;class goodGay{public:​goodGay();void visit();​private:Building *building;};​​class Building{//告诉编译器 goodGay类是Building类的好朋友,可以访问到Building类中私有内容friend class goodGay;​public:Building();​public:string m_SittingRoom; //客厅private:string m_BedRoom;//卧室};​Building::Building(){this->m_SittingRoom = "客厅";this->m_BedRoom = "卧室";}​goodGay::goodGay(){building = new Building;}​void goodGay::visit(){cout << "好基友正在访问" << building->m_SittingRoom << endl;cout << "好基友正在访问" << building->m_BedRoom << endl;}​void test01(){goodGay gg;gg.visit();​}​int main(){​test01();​system("pause");return 0;}

三、成员函数做友元

 class Building;class goodGay{public:​goodGay();void visit(); //只让visit函数作为Building的好朋友,可以发访问Building中私有内容void visit2(); ​private:Building *building;};​​class Building{//告诉编译器  goodGay类中的visit成员函数 是Building好朋友,可以访问私有内容friend void goodGay::visit();​public:Building();​public:string m_SittingRoom; //客厅private:string m_BedRoom;//卧室};​Building::Building(){this->m_SittingRoom = "客厅";this->m_BedRoom = "卧室";}​goodGay::goodGay(){building = new Building;}​void goodGay::visit(){cout << "好基友正在访问" << building->m_SittingRoom << endl;cout << "好基友正在访问" << building->m_BedRoom << endl;}​void goodGay::visit2(){cout << "好基友正在访问" << building->m_SittingRoom << endl;//cout << "好基友正在访问" << building->m_BedRoom << endl;}​void test01(){goodGay  gg;gg.visit();​}​int main(){test01();​system("pause");return 0;}

相关文章:

第十五章 类和对象——友元

生活中你的家有客厅(Public)&#xff0c;有你的卧室(Private) 客厅所有来的客人都可以进去&#xff0c;但是你的卧室是私有的&#xff0c;也就是说只有你能进去 但是呢&#xff0c;你也可以允许你的好闺蜜好基友进去。 在程序里&#xff0c;有些私有属性 也想让类外特殊的一些…...

【数仓精品理论分析】能不能学大数据?

【数仓精品理论分析】能不能学大数据&#xff1f; 还能不能学大数据datapulse官网&#xff1a; 自身情况数据行业发展情况 还能不能学大数据 首先看到这个话题的时候&#xff0c;我是这样想的&#xff0c;能不能学大数据需要参考本人的自身情况【学历、年龄、决心、有没有矿或者…...

java复习-多态性

多态性 在Java中对于多态性由两种实现的模式&#xff1a; 方法的多态性 方法的重载&#xff1a;同一个方法名称可以根据传入的参数类型和个数的不同&#xff0c;进行不同的处理。 方法的覆写&#xff1a;同一个方法可能根据使用子类的不同&#xff0c;由不同的实现。 对象的…...

美团外卖优惠券小程序 美团优惠券微信小程序 自带流量主模式 带教程

小程序带举牌小人带菜谱流量主模式&#xff0c;挺多外卖小程序的&#xff0c;但是都没有搭建教程 搭建&#xff1a; 1、下载源码&#xff0c;去微信公众平台注册自己的账号 2、解压到桌面 3、打开微信开发者工具添加小程序-把解压的源码添加进去-appid改成自己小程序的 4、…...

编写IDEA插件,实现根据现有代码生成流程图

实现根据现有代码生成流程图的功能需要考虑以下几个步骤&#xff1a; 分析代码结构&#xff0c;获取代码中的变量声明、分支语句、循环语句等语句结构。 根据代码结构生成流程图的节点和边。 将生成的流程图展示在IDEA界面中。 下面逐一说明以上步骤的实现方法&#xff1a;…...

王杰国庆作业day6

服务器 #include <stdio.h> #include <string.h> #include <stdlib.h> #include <my_head.h> #define PORT 2324 //端口号 #define IP "192.168.10.107" //本机IP int main(int argc, const char *argv[]) {sqlite3* d…...

【C语言】循环结构程序设计 (详细讲解)

前言&#xff1a;前面介绍了程序中常常用到的顺序结构和选择结构&#xff0c;但是只有这两种结构是不够的&#xff0c;还有用到循环结构(或者称为重复结构)。因为在日常生活中或是在程序所处理的问题中常常遇到需要重复处理的问题。 【卫卫卫的代码仓库】 【选择结构】 【专栏链…...

Spring的注解开发-注解原理解析-xml方式/注解方式组件扫描

目录 Spring注解的解析原理 xml配置组件扫描 注解方式配置组件扫描 原理图 yysy&#xff0c;没有搞太明白&#xff0c;真的复杂&#xff0c;欢迎大佬留言解惑 Spring注解的解析原理 使用Component等注解配置完毕后&#xff0c;要配置组件扫描才能使注解生效 xml配置组件扫…...

导出视频里的字幕

导出视频里的字幕 如何利用剪映快速提取并导出视频里的字幕 https://jingyan.baidu.com/article/c35dbcb0881b6fc817fcbcd2.html 如何快速提取视频中的字幕&#xff1f;给大家介绍一种简单高效又免费的提取方法。需要利用到“剪映”&#xff0c;以下是具体的操作步骤和指引&a…...

【KingbaseES】银河麒麟V10 ARM64架构_安装人大金仓数据库KingbaseES_V8R6(CentOS8)

&#x1f341; 博主 "开着拖拉机回家"带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——&#x1f390;开着拖拉机回家_Linux,Java基础学习,大数据运维-CSDN博客 &#x1f390;✨&#x1f341; &#x1fa81;&#x1f341; 希望本文能够给您带来一定的…...

【Vue】Vuex详解,一文读懂并使用Vuex

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是Java方文山&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;推荐给大家我的专栏《ELement》。&#x1f3af;&#x1f3af; &#x1…...

第三章 C程序设计

常量与变量 常量&#xff1a;整型常量&#xff1a;如1000 实型常量&#xff1a;十进制小数 字符常量&#xff1a;&#xff1f;&#xff01; 变量&#xff1a;变量必须先定义&#xff0c;后使用。 标识符&#xff1a;一个对象的名字。 浮点型数据 浮点型数据是用来表示具…...

QB/T 2703-2020 汽车装饰用皮革检测

汽车装饰用皮革主要用于坐垫皮革&#xff0c;座椅套皮革&#xff0c;靠垫套皮革&#xff0c;方向盘皮革和其他装饰用皮革&#xff0c;比如仪表盘等&#xff0c;其物理和环保性能非常重要&#xff0c;对人体的健康能起到很大的影响。 QB/T 5754-2022水性/无溶剂聚氨酯复合人造革…...

使用正则表达式批量修改函数

贪心匹配&#xff0c;替换中的$1代表括号中的第一组。 使用[\s\S\r]代表所有字符&#xff0c;同时加个问号代表不贪心匹配:...

【网络协议】UDP

UDP协议与TCP协议都是传输层协议&#xff0c;应用层把数据拷贝到传输层&#xff0c;后续动作由下层自行决定。 UDP协议端格式 16位 UDP 长度 , 表示整个数据报 (UDP 首部 UDP 数据 ) 的最大长度 ;&#xff08;也就是65535字节&#xff09; 如果校验和出错 , 就会直接丢弃 ; …...

雷达编程实战之提高探测速度

有效帧频率作为雷达一个非常核心的指标&#xff0c;它代表了雷达探测识别的速度&#xff0c;速度越快&#xff0c;后级各项智能驾驶功能就能得到更快、更有效的判断。本篇文章首先从硬件的角度&#xff0c;提供了一种合理利用片上资源提高探测识别速度的常用方法&#xff0c;然…...

pyspark常用功能记录

前言 pyspark中很多常用的功能&#xff0c;过段时间没有使用就容易忘记&#xff0c;需要去网上搜索&#xff0c;这里总结一下&#xff0c;省的以后还去去搜&#xff0c;供自己以后参考。 withColumn def hot_func(info_str):if info_str:eturn "1"return "0&…...

Spring面试题学习: 单例Bean是单例模式吗?

单例Bean是单例模式吗 学习背景答案扩展知识单例模式Spring BeanJava Bean单例Bean 个人评价我的回答 学习背景 想换工作. 学习记录, 算是一个输出. 答案 通常来说, 单例模式是指在一个JVM中, 一个类只能构造出一个对象. 有很多方法来实现单例模式, 比如饿汉模式. 但是我们通…...

EM@常用三角函数图象性质(中学部分)

文章目录 abstract正弦函数正弦型函数转动相关概念旋转角速度转动周期转动频率初相小结 余弦函数的图象与性质性质 正切函数的图象和性质由已知三角函数值求角任意角范围内反三角函数(限定范围内)反正弦反余弦反正切 abstract 讨论 sin ⁡ , cos ⁡ , tan ⁡ \sin,\cos,\tan s…...

一文拿捏Spring事务之、ACID、隔离级别、失效场景

1.&#x1f31f;Spring事务 1.编程式事务 事务管理代码嵌入嵌入到业务代码中&#xff0c;来控制事务的提交和回滚&#xff0c;例如TransactionManager 2.声明式事务 使用aop对方法前后进行拦截&#xff0c;然后在目标方法开始之前创建或者加入一个事务&#xff0c;执行完目…...

Gemini3.1Pro解决新媒体小编选题难痛点

做新媒体的小编&#xff0c;最怕的不是写&#xff0c;而是“今天写什么”。 选题总是来得很急&#xff0c;热点总是变化很快&#xff0c;账号又要求持续更新&#xff0c;结果就是&#xff1a;内容压力大、时间不够用、框架搭不出来。如果你每天都在追热点、找角度、写标题、搭结…...

Onyx:基于Next.js 14的全栈MVP模板,集成Supabase与现代化工具链

1. 项目概述&#xff1a;Onyx&#xff0c;一个开箱即用的全栈Next.js 14 MVP模板如果你正在寻找一个能让你在几天内&#xff0c;而不是几周内&#xff0c;就启动一个现代化、功能齐全的Web应用原型的起点&#xff0c;那么Onyx很可能就是你需要的那个“瑞士军刀”。这不是一个简…...

E-Hentai下载器:免费漫画批量下载工具完整指南

E-Hentai下载器&#xff1a;免费漫画批量下载工具完整指南 【免费下载链接】E-Hentai-Downloader Download E-Hentai archive as zip file 项目地址: https://gitcode.com/gh_mirrors/eh/E-Hentai-Downloader 你是否曾经为了收藏喜欢的漫画而一页一页手动保存&#xff1…...

AI智能体交互体验优化:从对话管理到个性化记忆的工程实践

1. 项目概述&#xff1a;从“Agent Experience”看智能体交互体验的演进最近在GitHub上看到一个挺有意思的项目&#xff0c;叫“agent-experience”&#xff0c;作者是dhruvvsukhadia。光看这个名字&#xff0c;可能很多人会有点懵——这到底是做什么的&#xff1f;是开发AI智能…...

modbus 512 断线重连 db browser for sqlite

断线重连 private async Task HeartbeatLoopAsync(CancellationToken token) {// 监工一直循环干活&#xff0c;直到工长喊停工&#xff08;token.IsCancellationRequested&#xff09;while (!token.IsCancellationRequested){try{// 每隔一段时间检查一次&#xff08;最少20…...

Standard计划突然限速?揭秘MJ v6.1后台配额算法变更,3步绕过队列延迟,今日生效

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Standard计划限速事件的全貌还原 2024年Q2&#xff0c;Standard计划在多个云原生生产环境中突发性触发API速率限制&#xff08;Rate Limiting&#xff09;&#xff0c;导致下游服务批量超时与重试风暴。…...

自建团队协作平台TeamClaw:从架构设计到部署运维全指南

1. 项目概述与核心价值最近在折腾一个挺有意思的开源项目&#xff0c;叫teamclaw&#xff0c;仓库地址是teamclawai/teamclaw。乍一看这个名字&#xff0c;可能有点摸不着头脑&#xff0c;但深入了解一下&#xff0c;你会发现它瞄准的是一个非常具体且高频的痛点&#xff1a;团…...

Starter计划配额耗尽预警失效?我们逆向解析其API响应头,发现3个未文档化的速率控制暗门

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Starter计划配额耗尽预警失效&#xff1f;我们逆向解析其API响应头&#xff0c;发现3个未文档化的速率控制暗门 在对 Starter 计划的 API 调用行为进行深度监控时&#xff0c;我们观察到配额耗尽告警频…...

基于MCP协议的elabftw AI助手:安全模型、配置与自动化实践

1. 项目概述&#xff1a;为电子实验笔记本插上AI的翅膀如果你是一名科研人员、实验室管理者&#xff0c;或者像我一样&#xff0c;经常需要和电子实验笔记本&#xff08;ELN&#xff09;打交道&#xff0c;那你一定对重复性的数据查询、整理和录入工作感到头疼。每天在浏览器和…...

基于 4SAPI 的 API 网关智能监控与故障诊断系统:MTTR 降低 90%,系统可用性提升至 99.99%

前言 在微服务架构盛行的今天&#xff0c;API 网关已经成为企业系统的核心入口&#xff0c;承担着流量路由、负载均衡、认证授权、限流熔断等关键功能。API 网关的稳定性直接决定了整个系统的可用性。但传统的 API 网关监控模式已经难以满足现代企业的需求&#xff1a; 告警风…...