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

【C++】友元成员

类的特性之一就是封装,而友元就是C++为用户提供打破这种封装的手段,友元分为友元函数和友元对象

友元函数

  • 友元函数,他只是一个函数,友元函数不是类的成员,通过类对象是无法访问的,但是在这个函数中有权通过对象访问类中的所有成员
  • 友元函数,无论声明在类中的任何访问属性下都可以,不影响他的调用和访问

示例:

#include<iostream>
class node {
    int id = 10;
    friend void fun(node& n);
};
void fun(node& n) {
    std::cout << n.id << std::endl;
}
int main() {
    node n;
    fun(n);//输出10
}

友元类

友元类是一个单独的类,只不过和友元函数一样,在类中声明了一个友元类,在这个友元类中同样也可以访问该类中的所有成员,在A类中声明B类为A类的友元类,那么在B类中就可以访问A类中的所有成员

示例:

#include<iostream>
class A {
    friend class B;
    int id = 10;
};
class B {
public:
    void fun(A& a) {
        std::cout << a.id << std::endl;
    }
};
int main() {
    A a;
    B b;
    b.fun(a);//输出10
}

友元的特性

  1. 单方向:B是A的朋友,B可以访问A的数据,A不可以访问B的数据
  2. 不传递:A是B的朋友,B是C的朋友,A和C没有朋友关系
  3. 不继承:A是B的朋友,B是C的父亲,A和C没有朋友关系

http://www.kler.cn/a/405189.html

相关文章:

  • 【大数据分析机器学习】分布式机器学习
  • java-贪心算法
  • CSS实现实现当文本内容过长时,中间显示省略号...,两端正常展示
  • 【Golang】协程
  • 深度学习:深入理解图像数据维度:批量大小、通道数、高度与宽度
  • matlab的函数名和函数文件名的关系(编程注意事项)
  • 给定一个数查找所在区间或者查找所有重叠区间的算法总结
  • Mac配置maven环境及在IDEA中配置Maven
  • @Autowired 和 @Resource思考(注入redisTemplate时发现一些奇怪的现象)
  • 商用密码产品认证名录说明
  • C++在实际项目中的应用第二节:C++与区块链
  • oracle初始化参数
  • Flutter:AnimatedBuilder自定义显示动画
  • mac-mini的时间机器,数据备份到alist 中的网盘
  • 山东春季高考-C语言-综合应用题
  • WPF里面的C1FlexGrid表格控件添加RadioButton单选
  • Hive离线数仓结构分析
  • 树莓派2装FreeBSD14.1 Raspberry Pi2 install FreeBSD14.1 00000121:error:0A000086:SSL
  • ✅✅✅【Vue.js】sd.js基于jQuery Ajax最新原生完整版for凯哥API版本
  • 深度学习中的正则化技术
  • C++中的组合模式
  • 「Mac玩转仓颉内测版23」基础篇3 - 深入理解整数类型
  • Ubuntu24.04解决向日葵安装libgconf-2-4依赖问题
  • 鸿蒙学习高效开发与测试-ArkUI 框架(2)
  • MySQL 视图使用详解
  • [C#] 关于数组的详细解释以及使用注意点