C++中 freind class
时间: 2024-04-11 11:28:52 浏览: 93
在C++中,`friend class`是一种访问控制机制,允许一个类将另一个类声明为友元(friend),从而使得友元类可以访问该类的私有成员和保护成员。
通过在一个类的声明中使用`friend`关键字,可以将另一个类声明为该类的友元。这样,友元类就可以访问被声明的类的私有成员和保护成员。
以下是一个示例:
```cpp
class MyClass {
private:
int privateMember;
protected:
int protectedMember;
public:
MyClass() {
privateMember = 0;
protectedMember = 0;
}
friend class FriendClass;
};
class FriendClass {
public:
void accessPrivateMember(MyClass& obj) {
obj.privateMember = 10; // 可以访问私有成员
}
void accessProtectedMember(MyClass& obj) {
obj.protectedMember = 20; // 可以访问保护成员
}
};
int main() {
MyClass obj;
FriendClass friendObj;
friendObj.accessPrivateMember(obj); // 通过友元访问私有成员
friendObj.accessProtectedMember(obj); // 通过友元访问保护成员
return 0;
}
```
在上面的例子中,`FriendClass`被声明为`MyClass`的友元类。因此,`FriendClass`可以在其成员函数中访问`MyClass`的私有成员和保护成员。
需要注意的是,友元关系是单向的,即如果类A将类B声明为友元,则类B可以访问类A的私有成员和保护成员,但类A不能访问类B的私有成员和保护成员。此外,友元关系不会继承,即如果类A是类B的友元,而类C继承自类B,则类C不能自动访问类A的私有成员和保护成员。
友元关系应该谨慎使用,因为它破坏了封装性,增加了代码的耦合度。只有在确实需要在两个类之间共享私有成员或保护成员时,才应该使用友元类。
阅读全文