📅  最后修改于: 2023-12-03 14:59:36.723000             🧑  作者: Mango
在C++中,我们可以使用友元关键字来定义友元函数或友元类。定义为友元的函数或类可以访问该类的私有成员和保护成员。
友元函数是在类中声明且在类外实现的函数。在声明函数时,可以在前面加上 friend
关键字,将其定义为友元函数。例如:
class MyClass {
int privateVar;
friend void friendFunction(MyClass obj);
public:
MyClass(int var) : privateVar(var){}
};
void friendFunction(MyClass obj) {
std::cout << "The privateVar value of MyClass object is: " << obj.privateVar << std::endl;
}
这样, friendFunction
就可以访问 privateVar
。
友元类是一个类,可以访问另一个类的私有成员和保护成员。要将一个类定义为另一个类的友元类,需要在该类的声明中声明为友元类。例如:
class MyClass {
int privateVar;
friend class FriendClass;
public:
MyClass(int var) : privateVar(var){}
};
class FriendClass {
public:
void printPrivateVar(MyClass obj) {
std::cout << "The privateVar value of MyClass object is: " << obj.privateVar << std::endl;
}
};
在上述代码中, FriendClass
被声明为 MyClass
的友元类。因此,FriendClass
中的 printPrivateVar
函数可以访问 MyClass
中的 privateVar
成员变量。
友元关键字在C++中是非常强大的。通过将函数和类定义为友元,我们可以访问类的私有和保护成员。但是,滥用友元关键字可能会破坏类的封装性,从而导致不必要的安全问题。因此,我们应该谨慎使用友元关键字。