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;
}