深蓝的小秘密:友元

来源:互联网 发布:淘宝远程安装系统 编辑:程序博客网 时间:2024/04/27 22:33

最近Ration打题老是玄学,原来是深蓝遇到了烦心事,无心编译程序。

Ration:编译运行!!听见没!!

深蓝:(机械音)compliting-------system error:Your computer is in bad mood,complite failed.

Ration:唉,,,你又咋了,,,

深蓝:EMMMMMM……怎么说……就是这样的……虽然我和银白是好朋友,我让她随便用我的很多东西,但是毕竟她不是我,好多变量她没法操作……

Ration:这样啊,,,话说你知道一个东西叫“友元”么?

深蓝:不知道,咋啦?

Ration:我来给你讲讲“友元”吧,虽然你来自未来,我不知道那时候的程序设计思想,但是,你可以根据“友元”这一思想,自己确定方案。

深蓝:你说吧。

Ration:有两种友元。第一种是函数,称为友元函数;第二种是类,称为友元类。当一个类作为另一个类的友元时,这就意味着这个类的所有成员函数都是另一个类的友元函数

深蓝:这有什么用么?

Ration:(摸头)乖,别急,听我说。

深蓝:(脸红)嗯……

Ration:

我们已知道类具有封装和信息隐藏的特性。只有类的成员函数才能访问类的私有成员,程序中的其他函数是无法访问私有成员的。非成员函数可以访问类中的公有成员,但是如果将数据成员都定义为公有的,这又破坏了隐藏的特性。另外,应该看到在某些情况下,特别是在对某些成员函数多次调用时,由于参数传递,类型检查和安全性检查等都需要时间开销,而影响程序的运行效率。

为了解决上述问题,提出一种使用友元的方案。友元是一种定义在类外部的普通函数或类,但它需要在类体内进行说明,为了与该类的成员函数加以区别,在说明时前面加以关键字friend。友元不是成员函数,但是它可以访问类中的私有成员。友元的作用在于提高程序的运行效率,但是,它破坏了类的封装性和隐藏性,使得非成员函数可以访问类的私有成员。不过,类的访问权限确实在某些应用场合显得有些呆板,从而容忍了友元这一特别语法现象。

——————摘自360百科

什么意思呢?简单来说,就是,有些你的小秘密,不能都让随便一个人知道,但是如果每台计算机/姬看的时候都重新判断TA有没有权限,又太浪费时间。如果你想让银白看,不想让其他计算ji看,不如将银白视为你的友元。

深蓝:EMMMMMM……

Ration:自然,友元是单向的。也就是说,你如果把银白设为你的友元,你却不一定是银白的友元。也许她能看你的你的,你却不能看她的。具体怎么样你自己决定吧。

深蓝:我愿意!怎么声明呢?

Ration:我举个例子。

class a

{

  public:

      int a,b,c;

private:

     int d,e;

   friend int fanhui()

        {

            return d;

        }

}

这是友元函数。

 class A
       {
              …
       public:
              friend class B;
              …
       };

这是友元类。

深蓝:EMMMMMM,我明白了。

Ration:你不怕她不设置你为友元么?

深蓝:我设置她为友元,是因为我信任她,她没有义务因为我的信任信任我。

————————————————————————

果然,银白也设置深蓝为友元了。

Ration:现在可以了吧= =,赶紧给我编译!!

深蓝:好哒主人OVO

原创粉丝点击