深蓝的小秘密:友元
来源:互联网 发布:淘宝远程安装系统 编辑:程序博客网 时间: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
- 深蓝的小秘密:友元
- Ration与深蓝的下午茶(二):深蓝临危不乱的秘密——时间片
- GRUB的小秘密
- GOOGLE的小秘密
- Google的小秘密
- 身体的小秘密
- mfc的小秘密
- windowsXP的小秘密
- Firefox的小秘密
- iostream的小秘密
- @Override的小秘密
- QQ的小秘密
- 内存条的小秘密
- 深蓝儿童的预言
- 深蓝
- CRM不可告人的小秘密
- google的一点小秘密
- 搜索引擎Google的小秘密
- android自动弹出软键盘(输入键盘)
- 对KotlinArt项目,框架升级 2.0 ——> 3.0 的草稿。
- js中的date对象
- 代码书写规范(范本yii2.0)
- Java接口
- 深蓝的小秘密:友元
- Java线程池相关
- 【LeetCode】Longest Palindromic Substring
- struts
- DNS负载均衡
- ALSA声卡驱动中的DAPM详解之三:如何定义各种widget
- spring实现文件上传和下载完整方案
- 数学与国家实力
- PHP之设计模式(一)---铺垫篇