news 2026/4/15 12:27:01

C++之友元

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C++之友元

文章目录

  • 友元函数
  • 友元类
  • 友元成员函数
  • 类的封装具有信息隐藏能力,但也带来了访问效率的问题
  • c++通过友元给某些函数一项特权,可以访问类中的私有成员,使用的关键字是friend

友元函数

  • 友元函数可以直接访问类的私有成员
classX{friendTf(...);// 声明f为X类的友元...};Tf(...){}//友元不是类的成员函数

友元类

  • 一个类可以是另一个类的友元,友元类的所有成员函数都是另一个类的友元函数,能够直接访问另一个类的所有成员
#include<iostream>usingnamespacestd;classA{private:intx,y;public:A(inti,intj){x=i;y=j;}intgetx(void){returnx;}intgety(void){returny;}friendclassB;//声明B是A的友元类};classB{private:intz;public:B(inti=0){z=i;}intadd(constA&a){returna.x+a.y+z;}intsub(constA&a){returna.x-a.y-z;}};intmain(void){Aa(2,3);Bb(4);cout<<b.add(a)<<endl;cout<<b.sub(a)<<endl;return0;}
  • 友元类不是双向的:B是A的友元类, 不意味着A也是B的友元类

友元成员函数

  • 对一个类,可以指定它的某个成员函数是另一个类的友元,也就是友元成员函数
#include<iostream>usingnamespacestd;classB{private:intz;public:B(inti=0){z=i;}intadd(constA&);intsub(constA&);};classA{private:intx,y;public:A(inti,intj){x=i;y=j;}intgetx(void){returnx;}intgety(void){returny;}//friend class B; //声明B是A的友元类friendintB::add(constA&a);};intB::add(constA&a){returna.x+a.y+z;}intB::sub(constA&a){// return a.x - a.y - z;}intmain(void){Aa(2,3);Bb(4);cout<<b.add(a)<<endl;cout<<b.sub(a)<<endl;return0;}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/12 5:12:54

从工业质检到艺术创作:Halcon边缘提取技术的跨界应用探索

从工业质检到艺术创作&#xff1a;Halcon边缘提取技术的跨界应用探索 当工业视觉检测领域的Halcon边缘提取技术遇上艺术创作与文物保护&#xff0c;会碰撞出怎样的火花&#xff1f;传统认知中&#xff0c;Halcon作为机器视觉领域的标杆工具&#xff0c;其亚像素级边缘检测能力…

作者头像 李华
网站建设 2026/4/14 14:00:50

细胞多尺度仿真软件:CellBlender_(2).CellBlender软件安装与配置

CellBlender软件安装与配置 1. CellBlender简介 CellBlender 是一个强大的细胞多尺度仿真软件&#xff0c;它集成了 Blender 三维建模和动画功能&#xff0c;提供了高度可视化的用户界面&#xff0c;使得研究人员可以方便地构建复杂的细胞环境并进行仿真。CellBlender 的主要…

作者头像 李华
网站建设 2026/4/10 0:03:53

LLM+RAG+知识图谱构建AI智能客服:架构设计与工程实践

LLMRAG知识图谱构建AI智能客服&#xff1a;架构设计与工程实践 把客服机器人从“答非所问”改造成“秒懂人话”&#xff0c;只需要把 LLM、RAG 和知识图谱拼成一条流水线——但怎么拼、在哪拐弯、哪里容易翻车&#xff0c;这篇笔记一次说清。 一、传统客服到底卡在哪&#xff1…

作者头像 李华
网站建设 2026/4/15 3:43:16

毕设园区网络设计入门:从拓扑规划到基础配置的完整实践指南

毕设园区网络设计入门&#xff1a;从拓扑规划到基础配置的完整实践指南 第一次把“园区网络”四个字写进毕业设计任务书时&#xff0c;我满脑子都是“交换机怎么连”“IP 怎么分”“会不会一插就环路”——结果真动手后&#xff0c;广播风暴、地址冲突、ACL 写错一个号直接把自…

作者头像 李华
网站建设 2026/4/10 3:46:52

LabVIEW迈克耳孙干涉虚拟仿真

LabVIEW构建高保真迈克耳孙干涉实验虚拟仿真平台&#xff0c;完美复刻真实实验的光路原理、操作逻辑与数据计算流程。解决传统光学实验受时空限制、仪器损耗大、原理抽象难懂等&#xff0c;通过 LabVIEW 的模块化设计与交互优势&#xff0c;实现 “原理可视化、操作具象化、数据…

作者头像 李华
网站建设 2026/4/8 23:45:26

ChatGPT 工作原理深度解析:从模型架构到实战优化

背景与痛点&#xff1a;为什么“调一下接口”并不简单 把 ChatGPT 塞进业务系统&#xff0c;很多团队第一步都是“先调个接口看看”。结果真实场景里&#xff0c;响应延迟、上下文漂移、token 爆表 这三座大山立刻出现&#xff1a; 延迟&#xff1a;国内网络到 OpenAI 平均 3…

作者头像 李华