代码实现
#include <iostream>
class A {
private:
int privateVar;
public:
A(int value) : privateVar(value) {}
// 声明B为友元类
friend class B;
};
class B {
public:
void accessPrivateVar(A& a) {
std::cout << "Accessed privateVar in A: " << a.privateVar << std::endl;
}
};
安全性特点与潜在风险
- 安全性特点:
- 提供灵活访问:友元机制允许特定的类(友元类)访问另一个类的私有成员,在某些需要紧密协作的类之间,这种机制提供了一种灵活的访问方式,使得相关类之间可以高效交互而无需通过公开接口进行复杂的操作。
- 局部破坏封装:它只是对封装性的局部破坏,只有明确声明为友元的类才能访问私有成员,相比于将所有成员都设为公有,在一定程度上仍保留了类的封装性。
- 潜在风险:
- 破坏封装性:从严格意义上讲,友元机制破坏了类的封装性原则,使得私有成员不再是完全私有的,可能导致对类内部状态的非预期访问和修改,降低了代码的可维护性和可理解性。
- 增加耦合度:友元关系增加了类之间的耦合度,一个类的实现细节暴露给了友元类,这意味着当类的私有成员发生变化时,不仅自身的代码需要修改,其友元类的代码也可能需要调整,从而增加了维护成本。