在C++中,可以通过在类中声明友元函数来实现彼此拥有友元函数的类。以下是一个代码示例:
#include
class ClassB; // 前向声明ClassB类
class ClassA {
private:
int privateDataA;
public:
ClassA(int data) : privateDataA(data) {}
// 声明ClassB的成员函数为友元函数
friend void ClassB::printPrivateDataA(ClassA& obj);
};
class ClassB {
private:
int privateDataB;
public:
ClassB(int data) : privateDataB(data) {}
// 友元函数可以访问ClassA的私有成员
void printPrivateDataA(ClassA& obj) {
std::cout << "ClassA private data: " << obj.privateDataA << std::endl;
}
};
int main() {
ClassA objA(10);
ClassB objB(20);
objB.printPrivateDataA(objA); // 输出:ClassA private data: 10
return 0;
}
在上面的代码中,ClassA类中声明了ClassB的成员函数printPrivateDataA
为友元函数。这使得ClassB类的对象可以访问ClassA的私有成员。在main
函数中,创建一个ClassA的对象objA
和一个ClassB的对象objB
,然后通过objB
调用printPrivateDataA
函数,输出了ClassA对象的私有成员privateDataA
的值。
请注意,为了使ClassA类能够在ClassB类中被使用,我们需要在ClassB类之前进行前向声明。这是因为友元函数的声明必须在类的定义之前。