友元关系:为不同的类或普通函数提供访问本类的访问权限。
1. 友元函数
友元函数是在勒种用关键字friend修饰的非成员函数。友元函数可以是一个普通的函数,也可以是其他类的成员函数。虽然他不是本类的成员函数,但是在它的函数体中可以通过对象名访问类的私有和保护成员。
class A
{
public:
void HelloA(void);
friend void Hello(void);
private:
int ME_A;
}
void Hello(A CLASS_A_name)
{
函数体
函数体中可以访问类 A 的私有成员
}
2. 友元类
同友元函数一样,一个类可以将另一个类声明为友元类。若A类为B类的友元类,则A类的所有成员函数都是B类的友元函数,都可以访问B类的私有和保护成员
class A
{
public:
friend class B;
private:
int A_DATA;
}
class B
{
public:
void Hello_classA(A Aclass_name);
private:
int B;
}
void B::Hello_classA(A Aclass_name)
{
函数体
在函数体中可以访问类A的私有成员和成员函数
}
int main(void)
{
B b_name;
A Aclass_name;
b_name.Hello_classA(Aclass_name);
return 0;
}
友元类的注意事项:
1. 友元关系是不能传递
2.友元关系是单向的
3. 友元关系是不被继承的