跳至主要內容

22.C++友元

约 156 字小于 1 分钟

C++的友元是用来访问有限制的私有内容

全局函数友元

#include <iostream>

class MyClass {
private:
    int secret;

public:
    MyClass(int val) : secret(val) {}

    // 声明全局函数为友元
    friend void showSecret(const MyClass& obj);
};

// 全局函数定义
void showSecret(const MyClass& obj) {
    std::cout << "Secret value: " << obj.secret << std::endl;
}

int main() {
    MyClass obj(42);
    showSecret(obj);  // 访问私有成员
    return 0;
}

友元类

#include <iostream>

class MyClass {
private:
    int secret;

public:
    MyClass(int val) : secret(val) {}

    // 声明 Friend 类
    friend class SecretKeeper;
};

class SecretKeeper {
public:
    void revealSecret(const MyClass& obj) {
        std::cout << "Secret value: " << obj.secret << std::endl;
    }
};

int main() {
    MyClass obj(42);
    SecretKeeper keeper;
    keeper.revealSecret(obj);  // 访问私有成员
    return 0;
}

友元函数