在C++中,友元(friend)是一种特殊的关系,允许一个类或函数访问另一个类的私有成员。通常情况下,只有同一类中的成员函数才能访问该类的私有成员,但通过友元关系,可以允许其他类或函数也能够访问私有成员。
友元关系通过在类定义中使用 friend 关键字来声明。被声明为友元的函数或类可以访问另一个类的私有成员,即使这些成员在正常情况下对外部是不可见的。需要注意的是,友元关系是单向的,声明了友元的类或函数可以访问其他类的私有成员,但被访问的类并不具备对友元类或函数私有成员的访问权限。
class A {
private:
int privateMember;
public:
A() : privateMember(0) {}
// 声明B类为A类的友元
friend class B;
};
class B {
public:
void accessPrivateMember(A& a) {
// 友元类B可以访问A类的私有成员privateMember
a.privateMember = 10;
}
};
int main() {
A objA;
B objB;
objB.accessPrivateMember(objA); // 通过B类对象调用访问A类私有成员的函数
return 0;
}
在这个示例中,类 B 被声明为类 A 的友元。因此,类 B 的成员函数 accessPrivateMember() 可以访问类 A 中的私有成员 privateMember。在 main() 函数中,我们创建了一个 A 类的对象 objA 和一个 B 类的对象 objB,然后通过 objB 对象调用了 accessPrivateMember() 函数,成功地修改了 objA 对象的私有成员 privateMember 的值。