📅  最后修改于: 2023-12-03 15:29:42.421000             🧑  作者: Mango
在C++中,friend
关键字用于声明类的友元。友元函数或友元类可以访问指定类的私有成员和保护成员,这使得友元成员可以更加方便地访问私有成员而无需通过公共接口。
在类声明中使用friend
关键字声明一个函数,该函数可以访问该类的私有成员和保护成员。在类外定义这个友元函数时,函数名前不需要加类名限定符。
class MyClass {
private:
int a;
friend void myFunction(MyClass& obj); // 友元函数声明
};
void myFunction(MyClass& obj) {
obj.a = 1; // 可以访问MyClass类的私有成员a
}
在上面的例子中,myFunction
是一个友元函数,可以访问MyClass
类的私有成员a
。
在类声明中使用friend
关键字声明一个类,该类可以访问该类的私有成员和保护成员。在类外定义这个友元类时,类名前需要加类名限定符。
class MyClass {
private:
int a;
friend class MyFriendClass; // 友元类声明
};
class MyFriendClass {
public:
void myFunction(MyClass& obj) {
obj.a = 1; // 可以访问MyClass类的私有成员a
}
};
MyClass obj;
MyFriendClass myFriend;
myFriend.myFunction(obj);
在上面的例子中,MyFriendClass
是一个友元类,可以访问MyClass
类的私有成员a
。
需要注意的是,友元关系不能被继承。如果B
是A
的友元类,C
是B
的派生类,则C
不能访问A
的私有成员。
friend
关键字可以用于声明友元函数和友元类,使其可以访问指定类的私有成员和保护成员。需要注意友元关系不能被继承。