友元
概念
- 友元可以是一个函数,类,或者类的成员函数
- 友元声明在类的内部,但不受访问控制符(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; // 可以访问其私有成员
}
};