Chinaunix首页 | 论坛 | 博客
  • 博客访问: 121598
  • 博文数量: 121
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 1210
  • 用 户 组: 普通用户
  • 注册时间: 2009-10-03 23:43
文章分类

全部博文(121)

文章存档

2011年(1)

2010年(6)

2009年(114)

我的朋友

分类: 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:"< cout<<"girl\'s name is:"<}

void main()
{ boy b("chen hao",25);
 girl g("zhang wei",18);
 b.disp(g);
}

说明:
友元关系是单向的,不具有交换性(我是你的朋友,不能推断出:你是我的朋友)。
友元关系也不具有传递性(我是你的朋友,你是他的朋友,不能推断出:我是他的朋友)。

阅读(783) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~