鱼C论坛

 找回密码
 立即注册
查看: 2501|回复: 0

[技术交流] C++(14th for four):友元关系

[复制链接]
发表于 2021-2-18 21:29:41 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
友元关系

我们讲了,设置了private和protected的类无法被其他的类给访问到,但有些类却不得不访问这些类的成员该怎么办呢,这时候要使用到friend class
  1. #include <iostream>

  2. class Computer
  3. {
  4. public:
  5.         Computer();
  6.         void cout_num();
  7. private:
  8.         int num;
  9.         friend class Ipad;
  10. };

  11. class Ipad:public Computer
  12. {
  13. public:
  14.         void cout_num( Computer *p );
  15. };

  16. Computer::Computer()
  17. {
  18.         num = 11;
  19. }

  20. void Computer::cout_num()
  21. {
  22.         std::cout << num;
  23. }

  24. void Ipad::cout_num( Computer *p )
  25. {
  26.         std::cout <<"我从Ipad中输出p:" <<  p->num << std::endl;
  27.         p->num = 12;
  28. }

  29. int main()
  30. {
  31.         Ipad myipad;
  32.         Computer mycomputer;
  33.         myipad.cout_num( &mycomputer );
  34.         mycomputer.cout_num();
  35.        
  36.         return 0;
  37. }
复制代码

首先
  1. friend class Ipad;
复制代码

我们使用了friend class来使得Ipad可以访问到Computer内的private,然后使用
  1. myipad.cout_num( &mycomputer );
复制代码

来输出并修改private中num,然后用Computer里面的cout_num方法输出num,结果是成功的,num数被修改成了12
  1. 我从Ipad中输出p:11
  2. 12
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-5-1 18:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表