目录
什么是友元(friend)
友元是一种访问控制的机制,它允许一个类或函数访问另一个类的私有成员。通过友元关系,可以在需要时向其他类或函数提供对类的私有成员的访问权限,从而实现灵活的编程设计。
在程序里,私有属性只有类内才能访问,有些私有属性 也想让类外特殊的一些函数或者类进行访问,就需要用到友元的技术,友元的目的就是让一个函数或者类 访问另一个类中私有成员,友元的关键字为 friend
友元的三种实现
全局函数做友元
全局函数可以被声明为类的友元函数,从而获得对类的私有成员的访问权限。在类定义中使用
friend
关键字来声明该函数为友元函数。
friend void functionName(); // 声明友元函数
class MyClass {
private:
int privateData;
public:
friend void friendFunction(); // 声明友元函数
};
void friendFunction() {
MyClass obj;
obj.privateData = 10; // 可以访问私有成员
}
类做友元
一个类可以将另一个类声明为友元类,这意味着被声明为友元的类可以访问声明为友元类的所有私有和保护成员。在类的定义中使用
friend
关键字来声明友元类。
friend class ClassName; // 声明友元类
class FriendClass {
private:
int privateData;
public:
friend class MyClass; // 声明友元类
};
class MyClass {
private:
int privateData;
public:
void friendFunc(FriendClass& obj) {
obj.privateData = 10; // 可以访问FriendClass的私有成员
}
};
成员函数做友元
一个成员函数可以被声明为另一个类的友元函数。在类的定义中使用
friend
关键字来声明成员函数为友元函数。
friend void ClassName::memberFunctionName(); // 声明成员函数为友元函数
class FriendClass {
private:
int privateData;
public:
friend void MyClass::friendFunc(); // 声明MyClass的成员函数为友元函数
};
class MyClass {
private:
int privateData;
public:
void friendFunc() {
FriendClass obj;
obj.privateData = 10; // 可以访问FriendClass的私有成员
}
};