友元是一个被授权访问类的私有成员的非成员函数或类。在C++中,通过在类定义中使用关键字"friend"来声明友元函数或友元类。友元可以访问类的私有成员,但是不会受到类的访问权限限制。通常情况下,只有当需要在多个类之间共享某些数据时,才需要使用友元。以下是友元函数和友元类的声明和使用示例:
友元函数的声明和使用示例:
class MyClass {
private:
int a;
friend int add(MyClass obj1, MyClass obj2);
public:
MyClass(int x) {
a = x;
}
};
int add(MyClass obj1, MyClass obj2) {
return obj1.a + obj2.a;
}
int main() {
MyClass obj1(5);
MyClass obj2(10);
cout << "Sum: " << add(obj1, obj2) << endl;
return 0;
}
友元类的声明和使用示例:
class MyClass {
private:
int a;
friend class MyFriend;
public:
MyClass(int x) {
a = x;
}
};
class MyFriend {
public:
void printA(MyClass obj) {
cout << "A: " << obj.a << endl;
}
};
int main() {
MyClass obj(5);
MyFriend friendObj;
friendObj.printA(obj);
return 0;
}
需要注意的是,过度使用友元会破坏类的封装性和安全性,应慎重使用。只有在确实需要访问类的私有成员时,才应该使用友元。