分类: LINUX
2009-10-04 01:22:08
当一个类被说明为另一个类的友元时,它的所有的成员函数都成为另一个类的友元函数,这就意味着为友元的类中的所有成员函数都可以访问另一个类的私有成员。
//boy为girl的友元类
#include
#include
class girl;
class boy{
char *name;
int age;
public:
boy(char *n,int d)
{ name=new char[strlen(n)+1];
strcpy(name,n);
age=d;
}
void disp(girl &); //声明disp()为类boy的成员函数
~boy(){delete name;}
};
class girl{
char *name;
int age;
friend boy; //声明类boy是类girl的友元
public:
girl(char *n,int d)
{ name=new char[strlen(n)+1];
strcpy(name,n);
age=d;
}
~girl(){delete name;}
};
void boy::disp(girl &x) //定义函数disp()为类boy的成员函数,也是类girl的友元函数
{ cout<<"boy\'s name is:"<
void main()
{ boy b("chen hao",25);
girl g("zhang wei",18);
b.disp(g);
}
说明:
友元关系是单向的,不具有交换性(我是你的朋友,不能推断出:你是我的朋友)。
友元关系也不具有传递性(我是你的朋友,你是他的朋友,不能推断出:我是他的朋友)。