社区
C++ 语言
帖子详情
关于对"友元函数"的认识!(求助!!)
yanpinghui
2002-12-30 02:57:16
关于C++中"友元函数"这一知识点.我现在还有点模糊!
你说"友元"的作用到底是体现了它的"封装性"还是"提高了提高了"程序的运行效率",减少了系统的开销呢?好像都有点道理似的.(大家是怎样认为的呢?)
...全文
29
3
打赏
收藏
关于对"友元函数"的认识!(求助!!)
关于C++中"友元函数"这一知识点.我现在还有点模糊! 你说"友元"的作用到底是体现了它的"封装性"还是"提高了提高了"程序的运行效率",减少了系统的开销呢?好像都有点道理似的.(大家是怎样认为的呢?)
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
stevedai
2002-12-31
打赏
举报
回复
楼上分析的很对!C++设计的每个特性都是用来提高软件开发效率的,而不是
追求纯粹的OO,记住!任何特性得到一些,必然失去一些》
shornmao
2002-12-30
打赏
举报
回复
友员函数并没有降低封装性。而是兼顾效率和封装性的前提下提高了耦合性。
为什么呢?
假设一个函数(或者类),需要存取另一个类的成员,为了不破坏类的封装性,所以不能将类成员设计为public的,但是为了兼顾效率(调用函数产生的负担),又不便调用该类成员的getter和setter成员函数。如果将成员函数作为inline实现(假定编译器认为代码适合inline),那么也破坏了封装性,因为向类用户暴露了实现细节,尤其是,类用户可以自由修改成员函数的实现代码,从而有可能得到意想不到的结果。
所以,这就导致了友员这一概念的设计,他既不破坏封装性--类用户仍然不清楚类的实现细节,也适当的兼顾了效率--友员函数/类可以直接存取类的成员。
但是结果是,友员和提供友员的类之间的结合度增加,在OO的术语中叫做耦合度。
按照OO的观点,良好的类设计应该是低耦合/高聚合的,这就是友员的代价。
yatuor
2002-12-30
打赏
举报
回复
降低了封装性,和继承一样,天生的矛盾
对效率也没什么影响,就是写起来方便点
将函数模板设为友元
用类模板设计时,有时需要在类定义中声明
友元函数
,比如重载输出操作符 如,当我编写一个顺序表类模板时,加入了重载 template class SeqList { friend std::ostream& operator & slist); //…… }
关于函数模板在类模板中声明为友元的一些心得
用类模板设计时,有时需要在类定义中声明
友元函数
,比如重载输出操作符如,当我编写一个顺序表类模板时,加入了重载template class SeqList{ friend std::ostream& operator & slist); //……};此时在main.cpp文件中定义operator template ostream& operator & slist){ retu
JAVA 继承
继承引入 继承是JAVA面向对象三大特征之一,可以大大减少代码冗余。 什么是继承? 你爸的钱早晚都是你的。 在现实中,有一个好的家庭,你比别人拥有的就多一点。在JAVA中亦是如此。 为什么要用继承呢? 假如我们要完成一个学生类、一个职员类 class Student { public int age; // 年龄 public String name; // 姓名 public void eat () { System.out.println("吃饭"); } public void sle
C++程序设计课程师生互动(2012年春第8周)
【知识总结】 运算符的重载实质上就是为某一要用的运算符赋予一定的功能,使其实现自己要实现的运算。运算符的重载可读性强!在实现
友元函数
时括号内忘了该怎么正确书写,最后出了好多错误啊!不过我感觉它出的值,下次就记住了,不会再犯这样的错误了!在编写此程序时,要善于利用已实现的运算符功能,此外,要善于利用this指针。在编写过程中要善于撞错,会有利于自己以后少出错!为什么在比较大小的时候不能用两
有没有人来试试java面试,卑微秒回,可转正
题目描述:有一篇文章,共有三行文字,每行有80个字符,要求分别统计出英文大写字母,小写字母,数字,空格以及其他字符的个数。在C++中,顺序语句是一种基本的控制流语句,它按照代码的顺序从上到下执行。基础函数的封装就是将代码中需要的代码打包,并将这个包裹命名,在后续程序中,我们直接使用这个包裹,而不需要重新编写一段代码。C++中的结构体(struct)是一种用户自定义的数据类型,它允许您将多个不同类型的数据组合成一个单一的复合类型。在C++中,
友元函数
是一个特殊的函数,它可以在类的内部访问类的私有和保护成员。
C++ 语言
64,282
社区成员
250,470
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章