deepwzh的技术笔记
  • Golang
  • Python
  • Cpp
杂项
前端开发
  • 计算机网络
  • 操作系统
  • 数据库
云原生
Devops
AIGC
关于作者
  • Golang
  • Python
  • Cpp
杂项
前端开发
  • 计算机网络
  • 操作系统
  • 数据库
云原生
Devops
AIGC
关于作者
  • Cpp
  • c++ 模块
  • 类

    • 类
    • 友元
  • 开发工具

    • 开发工具
    • Vscode

      • Vscode
      • vscode 相关插件
  • 协程

    • 协程
    • test
  • 构建工具

    • 构建工具
    • Make
    • Cmake

      • Cmake
      • 常见问题
      • cmake 基本用法
      • cmake 集成 conan
      • cmake 生成器
      • cmake 库查找
  • 链接库

    • 链接库
    • 动态链接库
  • 编译器

    • 编译器
    • gcc

      • gcc
      • 常用选项
  • 包管理工具

    • 包管理工具
    • Canan

友元

概念

  • 友元可以是一个函数,类,或者类的成员函数
  • 友元声明在类的内部,但不受访问控制符(public/private/protected)的影响
  • 友元关系是单向的,不具有传递性

友元的形式

友元函数

class MyClass {
private:
    int privateData;
public:
    friend void friendFunction(MyClass& obj); // 声明友元函数
};

void friendFunction(MyClass& obj) {
    obj.privateData = 10; // 可以访问私有成员
}

友元类

class FriendClass; // 前向声明

class MyClass {
private:
    int privateData;
public:
    friend class FriendClass; // 声明为友元类
}

class FriendClass {
public:
    void accessPrivate(MyClass& obj) {
        obj.privateData = 20; // 可以访问其私有成员
    }
};

友元成员函数

class FriendClass; // 前向声明

class MyClass {
private:
    int privateData;
public:
    friend class FriendClass::specificFunction(MyClass& obj); // 声明为友元成员函数
}

class FriendClass {
public:
    void specificFunction(MyClass& obj) {
        obj.privateData = 20; // 可以访问其私有成员
    }
};
Prev
类