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

C++友元函数和友元类

C++友元函数和友元类

   友元是C++的一种特殊机制,用于打破类的封装性,使某些函数或类可以直接访问另一个类的私有(private)和受保护(protected)成员。友元关系由类显式声明,且单向且非继承。


1. 友元函数

  友元函数是被一个类声明为friend的普通函数。友元函数不属于类的成员函数,但可以直接访问该类的私有和受保护成员。

特点
  1. 友元函数不是类的成员函数,因此不能通过对象调用,而是通过普通的函数调用。
  2. 友元函数定义可以在类外部,也可以在类的内部定义。
  3. 友元关系是单向的:声明一个函数为友元函数,该函数可以访问类的私有成员,但反过来不行。

示例
#include <iostream>
class MyClass {
private:int privateVar;
public:MyClass(int val) : privateVar(val) {}// 声明友元函数friend void printPrivateVar(const MyClass& obj);
};// 友元函数的定义
void printPrivateVar(const MyClass& obj) {std::cout << "Private Variable: " << obj.privateVar << std::endl;
}int main() {MyClass obj(42);printPrivateVar(obj); // 调用友元函数return 0;
}

输出:

Private Variable: 42

友元函数的使用场景
  1. 实现全局函数访问类的
http://www.dtcms.com/a/211072.html

相关文章:

  • wsl 魔法
  • 【每天一个知识点】“数字人”(Digital Human)
  • 中台项目-微前端qiankun-umimax
  • PCB设计实践(二十七)电感的形态分类与应用场景深度解析
  • 一个国债交易策略思路
  • MySQL快速入门篇---联合查询
  • Mybatis(2)
  • CPU飚高处理经验总结
  • Web前端开发(JS的快速入门)
  • AI要掌握的知识
  • RAGFlow与Dify的深度刨析
  • 矩阵乘法--Python
  • ES的Refresh、Flush、Merge操作对性能的影响? ES如何实现近实时(NRT)搜索? ES聚合查询的Terms和Cardinality区别?
  • Linux的读写屏障
  • Matlab实战训练项目推荐
  • 每日c/c++题 备战蓝桥杯(洛谷P1873 EKO砍树问题详解)
  • 打卡day35
  • 嵌入式开发之STM32学习笔记day10
  • DNS Server在高可用高并发系统中的应用
  • 探秘Transformer系列之(34)--- 量化基础
  • 【VBA中的集合(Collection)的引用和方法参数】 VS 字典(Dictionary)
  • 【无标题】python执行系统命令
  • Python 训练营打卡 Day 34
  • 基于Springboot + vue3实现的养老系统
  • 电子电路:再谈滤波原理及其应用
  • 卷积神经网络优化与应用实践:参数设置、泛化能力提升及多领域应用解析
  • LeetCode 3362.零数组变换 III:贪心+优先队列+差分数组——清晰题解
  • 6个月Python学习计划 Day 3
  • 【第四篇】 SpringBoot整合第三方技术
  • 【Linux 学习计划】-- git 在Linux远端服务器上的部署与简单使用