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

友元的三种实现

友元的三种实现

  • 全局函数做友元
  • 类做友元
  • 成员函数做友元
#include <iostream>
#include <string>
using namespace std;//友元的三种实现
//
//* 全局函数做友元
//* 类做友元
//* 成员函数做友元class Building
{//告诉编译器 goodGay全局函数 是 Building类的好朋友,//可以访问类中的私有内容friend void goodGay(Building* building);
public:Building(){m_S = "客厅";m_B = "卧室";}
public:string m_S;
private:string m_B;
};void goodGay(Building* building)
{cout << "好基友正在访问:" << building->m_S << endl;cout << "好基友正在访问:" << building->m_B << endl;}
void test01()
{Building b;goodGay(&b);
}int main()
{test01();return 0;
}

类做友元

#include <iostream>
#include <string>
using namespace std;//友元的三种实现
//
//* 全局函数做友元
//* 类做友元
//* 成员函数做友元
class Building;
class goodGay
{public:goodGay();void visit();private:Building* building;
};class Building
{//告诉编译器goodGay类是Building类的好朋友,可以访问到Building类中的私有内容friend class goodGay;
public:Building();
public:string m_S;
private:string m_B;
};Building::Building()
{m_S = "客厅";m_B = "卧室";
}goodGay::goodGay()
{building = new Building;
}
void goodGay::visit()
{cout << "好基友正在访问" << building->m_S << endl;cout << "好基友正在访问" << building->m_B << endl;
}void test01()
{goodGay gg;gg.visit();
}int main()
{test01();return 0;
}

成员函数做友元

#include <iostream>
#include <string>
using namespace std;//友元的三种实现
//
//* 全局函数做友元
//* 类做友元
//* 成员函数做友元
class Building;
class goodGay
{public:goodGay();void visit();void visit2();private:Building* building;
};class Building
{//告诉编译器goodGay类是Building类的好朋友,可以访问到Building类中的私有内容friend void goodGay::visit();//friend void goodGay::visit2();public:Building();
public:string m_S;
private:string m_B;
};Building::Building()
{m_S = "客厅";m_B = "卧室";
}goodGay::goodGay()
{building = new Building;
}
void goodGay::visit()
{cout << "好基友正在访问" << building->m_S << endl;cout << "好基友正在访问" << building->m_B << endl;
}
void goodGay::visit2()
{cout << "好基友正在访问" << building->m_S << endl;//cout << "好基友正在访问" << building->m_B << endl; //-- 没有友元,没法访问
}
void test01()
{goodGay gg;gg.visit2();
}int main()
{test01();return 0;
}
http://www.lryc.cn/news/228946.html

相关文章:

  • 聊聊logback的DuplicateMessageFilter
  • WordPress 文档主题模板Red Line -v0.2.2
  • 网络和Linux网络_1(网络基础)网络概念+协议概念+网络通信原理
  • AI生成PPT工具——Gamma,结合GPT生成不错的效果
  • DcatAdmin使用模版文件时模板标签不生效
  • 【算法】算法题-20231114
  • 时序数据库 TDengine + 高级分析软件 Seeq,助力企业挖掘时序数据潜力
  • 【Rust 日报】2023-11-12 socketioxide
  • Redis快速入门(基础篇)
  • (三)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • SpringBoot--中间件技术-3:整合mongodb,整合ElasticSearch,附案例含代码(简单易懂)
  • matlab 二自由度操纵稳定性汽车模型
  • 超越任务调度的极致:初探分布式定时任务 XXL-JOB 分片广播
  • 设计模式-备忘录模式(Memento)
  • 【机器学习】正则化到底是什么?
  • Rust5.2 Generic Types, Traits, and Lifetimes
  • c 实用化的摄像头生成avi视频程序(加入精确的时间控制)
  • Web后端开发_01
  • 二十、泛型(6)
  • Java18新增特性
  • springboot容器
  • Windows 10 下使用Visual Studio 2017 编译CEF SDK
  • 数字货币swap交易所逻辑系统开发分析方案
  • spring boot中使用Bean Validation做优雅的参数校验
  • 搜索引擎项目
  • 7.外部存储器,Cache,虚拟存储器
  • UITableView的style是UITableViewStyleGrouped
  • Java17新增特性
  • VR全景技术在城市园区发展中有哪些应用与帮助
  • 在 SQL 中,当复合主键成为外键时应该如何被其它表引用