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

C++面向对象-友元

一.友元

/*
友元的目的让一个类 或者 函数
能够访问另一个类的私有成员友元的关键字: friend三种友元
1、全局函数作为友元
2、类作为友元
3、成员函数作为友元
*///1.全局函数作为友元:
原本m_Car作为私有变量,类外不能访问,为了解决这个问题,只要在类内声明该函数为友元函数,这样该函数就可以访问类内私有变量class People{friend void friendVisit(People* p);public:People() {m_House = "别墅";m_Car = "跑车";}public:string    m_House;private:string   m_Car;
};void friendVisit(People* p) {cout << "好朋友来访问你的" << p->m_House << endl;cout << "好朋友来访问你的" << p->m_Car << endl;
}//2、类作为友元:让一个类去访问另一个类的私有成员
原本类PeopleFriend和类People不能访问对方变量,但只要在类People内声明类PeopleFriend为友元类,类PeopleFriend就可以访问类People里面内容了
class People;class PeopleFriend {
public:PeopleFriend() {}void visit(People* p);
};class People {friend class PeopleFriend;
public:People() {m_House = "别墅";m_Car = "跑车";}
public:string    m_House;private:string    m_Car;
};void PeopleFriend::visit(People* p) {cout << "好朋友来访问你的" << p->m_House << endl;cout << "好朋友来访问你的" << p->m_Car << endl;
}//3、成员函数作为友元: PeopleFriend的某个函数能够访问  People的私有成员变量
//如果你直接把类声明为友元,那也可以访问People的私有成员变量,但PeopleFriend里所有函数都可以访问People的私有成员变量;如果你声明类内函数,就不是所有函数可以访问。
class People;class PeopleFriend {
public:PeopleFriend() {}void visitAll(People* p);void visitPub(People* p);
};class People {// friend class PeopleFriend;friend void PeopleFriend::visitAll(People* p);
public:People() {m_House = "别墅";m_Car = "跑车";}
public:string     m_House;
private:string     m_Car;
};void PeopleFriend::visitAll(People* p) {cout << "好朋友访问了你的" << p->m_House << endl;cout << "好朋友访问了你的" << p->m_Car << endl;}
void PeopleFriend::visitPub(People* p) {cout << "好朋友访问了你的" << p->m_House << endl;// cout << "好朋友访问了你的" << p->m_Car << endl;
}


文章转载自:
http://betenoire.wjrtg.cn
http://cerecloth.wjrtg.cn
http://chang.wjrtg.cn
http://cerebroid.wjrtg.cn
http://bouillon.wjrtg.cn
http://childproof.wjrtg.cn
http://cabas.wjrtg.cn
http://capataz.wjrtg.cn
http://beatage.wjrtg.cn
http://cadreman.wjrtg.cn
http://alkine.wjrtg.cn
http://boxy.wjrtg.cn
http://chemotactic.wjrtg.cn
http://cenobian.wjrtg.cn
http://assamese.wjrtg.cn
http://apathetically.wjrtg.cn
http://belabor.wjrtg.cn
http://chaplain.wjrtg.cn
http://appointer.wjrtg.cn
http://antecede.wjrtg.cn
http://adultness.wjrtg.cn
http://acmeist.wjrtg.cn
http://assertive.wjrtg.cn
http://acatalasia.wjrtg.cn
http://allodiality.wjrtg.cn
http://brimmer.wjrtg.cn
http://chanukah.wjrtg.cn
http://anticatalyst.wjrtg.cn
http://berascal.wjrtg.cn
http://chrysographed.wjrtg.cn
http://www.dtcms.com/a/261063.html

相关文章:

  • CSS 与 JavaScript 加载优化
  • Java调用金蝶webApi保存接口修改数据
  • 无线USB转换器TOS-WLink的无线USB助手配置文件详细胡扯
  • Unreal引擎——Chaos物理引擎(不)详解
  • 【队列】----【Keep In Line】
  • 阶段二开始-第一章—8天Python从入门到精通【itheima】-116节(封装)
  • 国防科大刘丽教授团队提出了一种用于合成孔径雷达目标识别的解耦自监督子空间分类器|TGRS
  • C++11新库特性:从入门到精通
  • 《Opto-Electronic Advances》热点论文速览(2025)
  • 【Python】实现对LGBT+ rights worldwide (2025)数据集的可视化展示
  • react + ant-design实现数字对比动画效果:当新获取的数字比之前展示的数字多或少2时,显示“+2”或“-2”的动画效果
  • A模块 系统与网络安全 第三门课 网络通信原理-2
  • 《二分枚举答案(最值问题)》题集
  • 3.web逆向之开发者工具调试
  • Spring Cloud 微服务(服务注册与发现原理深度解析)
  • VUE使用过程中的碰到问题记录
  • 听觉节律如何重塑α波?FREQ-NESS解密大脑动态重构
  • 查看SAP ERP系统各个版本号的方法:ECC、S/4HANA、Business One
  • AI+预测3D新模型百十个定位预测+胆码预测+去和尾2025年6月27日第121弹
  • SOME/IP 和 DDS 的详细对比,内容涵盖它们的核心差异、适用场景及选型建议
  • 北斗电动车定位器:守护出行安全的实用工具
  • 深入学习MySQL的页分裂(Page Split)
  • 学习接口自动化框架pytest有哪些好处?
  • 还在手动部署?用Jenkins+Docker+Git实现自动化CI/CD
  • 助力高考,利用python获取本专科专业选考科目要求
  • 【CMake基础入门教程】第八课:构建并导出可复用的 CMake 库(支持 find_package() 查找)
  • 02【C++ 入门基础】标准输入输出初识/缺省参数
  • 【力扣 中等 C】64. 最小路径和
  • 分布式session解决方案
  • qemu运行Ubuntu 18.04/arm64