c++中既然友元破坏了封装性,那为什么要用你好,
在c++中友元函数是为了实现非成员函数访问类的私有成员而声明的一种函数 。这样会造成你说的破坏了类的封装性 。但这是在开发人员期望的条件下破环的 , 就是说开发人员需要这种函数 。并不是开发人员之外的人用了这个友元函数破坏了类的封装性 。
谢谢,望采纳
什么是C#中的友元函数?友元函数怎样使用?c++中友元函数提高了效率,会破坏类c语言中友元函数有什么用的封装性;作用就是 , 指定的接口函数可以让友元类直接访问;复杂的封装过程中还是很有用的
C#中就不存在了,可以用internal实现类似友元的工能,类如
A,B两个类在同一个代码文件中定义
public class A
{
string _name = "";
public string Name
{
internal set{_name = value;}
get{return _name;}
}
}
在B类中就可以这样操作
A a = new A();
a.Name = "名字";
在其c语言中友元函数有什么用他地方进行使用时,A类的Name属性就是只读 的,而不能进行赋值
什么叫友元函数?友元函数和友元类
采用类的机制后实现了数据的隐藏与封装 , 类的数据成员一般定义为私有成员,成员函数一般定义为公有的,依此提供类与外界间的通信接口 。但是 , 有时需要定义一些函数,这些函数不是类的一部分,但又需要频繁地访问类的数据成员,这时可以将这些函数定义为该函数的友元函数 。除了友元函数外 , 还有友元类 , 两者统称为友元 。友元的作用是提高了程序的运行效率(即减少了类型检查和安全性检查等都需要时间开销),但它破坏了类的封装性和隐藏性 , 使得非成员函数可以访问类的私有成员 。
友元函数 :
友元函数是可以直接访问类的私有成员的非成员函数 。它是定义在类外的普通函数,它不属于任何类,但需要在类的定义中加以声明,声明时只需在友元的名称前加上关键字friend,其格式如下:
friend类型 函数名(形式参数);
友元函数的声明可以放在类的私有部分,也可以放在公有部分,它们是没有区别的,都说明是该类的一个友元函数 。
一个函数可以是多个类的友元函数,只需要在各个类中分别声明 。
友元函数的调用与一般函数的调用方式和原理一致 。
友元类 :
友元类的所有成员函数都是另一个类的友元函数 , 都可以访问另一个类中的隐藏信息(包括私有成员和保护成员) 。
当希望一个类可以存取另一个类的私有成员时,可以将该类声明为另一类的友元类 。定义友元类的语句格式如下:
friend class 类名;
其中:friend和class是关键字,类名必须是程序中的一个已定义过的类 。
例如,以下语句说明类B是类A的友元类:
class A
{
…
public:
friend class B;
…
};
经过以上说明后,类B的所有成员函数都是类A的友元函数,能存取类A的私有成员和保护成员 。
使用友元类时注意:
(1) 友元关系不能被继承 。
(2) 友元关系是单向的,不具有交换性 。若类B是类A的友元,类A不一定是类B的友元,要看在类中是否有相应的声明 。
(3) 友元关系不具有传递性 。若类B是类A的友元 , 类C是B的友元,类C不一定是类A的友元,同样要看类中是否有相应的申明
在C++中,为什么要使用到友元函数呢?有什么好处呢?能否举个例子友元函数是指某些虽然不是类成员却能够访问类的所有成员的函数 。。类授予它的友元特别的访问权 。通常同一个开发者会出于技术和非技术的原因 , 控制类的友元和成员函数(否则当你想更新你的类时,还要征得其它部分的拥有者的同意) 。
推荐阅读
- 抖音直播取消震动提醒,抖音直播取消震动提醒怎么弄
- go语言文件发送邮件,C语言发送邮件
- linux命令运行方式,总结linux命令行的主要用法
- phpcmsv9企业黄页模块正式版,企业黄页的含义是什么
- 包含go语言实现mtr的词条
- 新媒体地图如何制作的视频,新媒体写作地图
- 拍摄相机用什么型号,拍摄相机用什么型号的镜头
- 笔记本右键怎么不显示显卡,笔记本电脑鼠标右键没有显卡设置
- python函数规范 python的函数怎么写