游戏开发之友元类和友元函数(C++基础)

  • 可以访问该类的私有成员。
  • 友元关系不能被继承。
  • 友元关系是单向的。
  • 友元没有传递性,A是B的朋友、B是C的朋友、A不一定是C的朋友。
 //友元类//可以访问其私有成员//友元关系不能被继承//友元关系是单向的//友元没有传递性,A是B的朋友、B是C的朋友、A不一定是C的朋友class A{//友元类的声明friend class B;//友元函数的声明friend void Print(A &a);//重载输入流运算符friend std::istream& operator>>(std::istream& in, A& a);public:private:int m;void Print(){std::cout << "A::" << m << std::endl;}};class B{public:void Print(A &a){a.m = 200;a.Print();}};//友元函数void Print(A &a){a.Print();}//A& a可以修改//重载运算符std::istream& operator>>(std::istream& in, A& a){in >> a.m;return in;}int main(){A a;B b;b.Print(a);//使用输入流cin时,触发输入流重载函数,输入值赋给m。std::cin >> a;Print(a);return 0;}

游戏开发之友元类和友元函数(C++基础)相关推荐

  1. 【C++ 基础篇:21】:friend 友元四连问:什么是友元?友元类?友元函数?什么时候用友元?

    本系列 C++ 相关文章 仅为笔者学习笔记记录,用自己的理解记录学习!C++ 学习系列将分为三个阶段:基础篇.STL 篇.高阶数据结构与算法篇,相关重点内容如下: 基础篇:类与对象(涉及C++的三大特 ...

  2. 陈力:传智播客古代 珍宝币 泡泡龙游戏开发第26讲:PHP函数

    陈力:传智播客古代 珍宝币 泡泡龙游戏开发第26讲:PHP函数 什么是PHP函数,如何通过function定义一个函数,如何理解函数的调用过程.这些问题都是网站建设中经常遇到的程序设计问题.在进行网站 ...

  3. C++总结 友元类和友元函数

    在网上看到的文章, 写的挺全的,  具有总结性质. 于是转过来了.. 源地址(呵呵, 他也是转的)http://www.cnblogs.com/skyczw/archive/2008/05/27/12 ...

  4. 友元实例:友元类及友元函数

    学习了c++这么久,一直没有对友元进行了解,据说友元不是特别好用(据说,不是我说的),因此直到今天才去了解.其实友元确实不是很常用,但友元功能确实很实用,它不但能够释放类中的非公有成员,同时还能保证了 ...

  5. C++友元:友元函数、友元类和友元成员函数

    Table of Contents 1.友元函数 2.友元类 3.友元成员函数 友元小结: 参考资料: 有些情况下,允许特定的非成员函数访问一个类的私有成员,同时仍阻止一般的访问,这是很方便做到的.例 ...

  6. C++友元类和友元函数

    特点: 能访问私有成员 破坏封装性 友元关系不可传递.若B是A的友元,C是B的友元,但C不一定是A的友元,要看类中是否有申明. 友元关系的单向性.若A是B的友元,但B不一定是A的友元,要看类中是否申明 ...

  7. Th3.9:友元函数、友元类、友元成员函数详述

     本博客将记录:类的相关知识点的第9节的笔记! (这个在学习C++基础课程时已经学习过一次了,这里再次简单地回顾一下而已) 今天总结的知识分为以下3个点:   一.友元函数(对于非成员函数而言)   ...

  8. java友元类_友元实例:友元类及友元函数

    学习了c++这么久,一直没有对友元进行了解,据说友元不是特别好用(据说,不是我说的),因此直到今天才去了解.其实友元确实不是很常用,但友元功能确实很实用,它不但能够释放类中的非公有成员,同时还能保证了 ...

  9. java中友元类_友元类成员的依赖关系|循环依赖

    定义一个CBottle类,另一个类CCarton的某个成员对CBottle进行操作,因此在CBottle类中赋予CCarton成员的友元权利.我们很容易写出如下代码: //CBottle类的头文件 b ...

  10. Java游戏开发——飞行射击类游戏

    使用到的素材文件夹: 素材说明:bg0.jpg是背景图片.bomb_enemy是敌机爆炸时按顺序播放的四帧图片,bullet_0.png是子弹图片,enemy_alive.png是敌机图片,playe ...

最新文章

  1. python爬虫案例-python爬虫详细解析附案例
  2. ubuntu mysql 多端口_ubuntu 16.04下mysql5.7.17开放远程3306端口
  3. Git最最常用的命令
  4. 工行黄金递延业务AU(T+D)风险问题答案
  5. 分散mysql的写入压力_缓解MySQL写入压力和主从延迟的尝试
  6. 关于XML字符串和XML Document之间的转换
  7. php爬虫模拟登陆爬取数据全过程
  8. CSS常见 属性 框架 及常用选择器
  9. Android自定义锁屏实现----仿正点闹钟滑屏解锁
  10. 让复杂Json数据和对象自由转换 --- Gson
  11. Es7.x使用RestHighLevelClient进行聚合操作
  12. 经典算法系列之不死神兔
  13. linux日志查看技巧
  14. C++中标准模板库STL基本概念
  15. Spark学习-DAY1
  16. 互联网安全真正的守卫神
  17. mfp 服务器控制中心,固网1008MFP驱动
  18. 重要前端面试题,来自一个2022年面试大牛(上)
  19. linux vim安装molokai配色方案
  20. mysql_5.5.40-win64.msi/mysql_5.5.40-win32.msi位安装包下载

热门文章

  1. PyTorch(总)---PyTorch遇到令人迷人的BUG与记录
  2. pytorch_LSTM预测股票行情
  3. pytorch_CNN实现文本情感分类
  4. matplotlib—plt.pie绘制饼状图及参数详解
  5. bug-Skipping optimization due to error while loading function libraries: Invalid argument: Functions
  6. fig, ax = plt.subplots(figsize = (a, b))解析 与 plt.subplot()函数解析
  7. 吴恩达深度学习——深度学习的实用指南
  8. argparse模块用法
  9. Django ORM models操作
  10. Kubernetes学习指南,轻松拥抱云原生