友元关系
1.什么是友元关系
声明友元关系后可以让友元类访问到自己protected和private的属性和方法。定义友元类的语法:
firend class ****
这句话可以放在任何地方,但必须要在类里面。
2.一些细节问题
我自己写了一个例子来测试友元特性,注意看代码中的注释:
#include <iostream>
//在这里最好写上声明,因为A和B的类中的方法test_visit存在交叉访问,如果先定义A,那么A就不能访问B,所以要先在这里生声明好两个类,
//告诉编译器耐心点,后面有B的定义。
class A;
class B;
//----------------------------------------------------------------------------------------------------------------------------------------------------------------------
//这里写上A的定义和A的构造函数:
class A
{
friend class B;
public:
int a_pub;
void test_visit(B *);
A();
protected:
int a_pri;
};
A::A()
{
a_pub = 1;
a_pri = 2;
}
//-------------------------------------------------------------------------------------------------------------------------------------