c++的friend的用法
时间: 2024-10-18 10:14:18 浏览: 14
C++友元(Friend)用法实例简介
在C++中,`friend`关键字允许一个类访问另一个类的私有(private)和保护(protected)成员,即便这两个类之间没有任何继承关系。`friend`声明通常放在类内部,但也可以放在类外部作为独立的函数声明,这时它影响的是该函数对该类的访问权限。
以下是`friend`的一些常见用法:
1. **函数朋友**(Function Friends):允许非成员函数访问类的私有成员。这对于实现一些特殊的操作,如日志记录或计算,非常有用。
```cpp
class MyClass {
private:
int privateValue;
public:
friend void logPrivateValue(MyClass& obj);
};
void logPrivateValue(MyClass& obj) {
std::cout << "Private value: " << obj.privateValue << std::endl;
}
```
2. **类朋友**(Class Friends):两个完全独立的类之间可以互相成为朋友,共享彼此的私有信息。
3. **友元类**(Friend Class):一个类可以声明另一个类为友元,使得后者可以直接操作前者的所有成员,包括私有和保护成员。
```cpp
class A {
private:
int a;
friend class B;
};
class B {
public:
void accessA(A& obj) {
obj.a = 42; // 直接访问A的私有成员
}
};
```
阅读全文