当前位置: 首页 > news >正文

网站建设的美图专业网站制作网站公司

网站建设的美图,专业网站制作网站公司,海珠免费网站建设,阜宁做网站的公司电话想象有个class用来表示网页浏览器。这样的class可能提供的众多函数中,有一些用来清除下载元素高速缓存区、清除访问过的URLs的历史记录、以及移除系统中的所有cookies: class WebBrowser{ public:void clearCache();void clearHistory();void removeCoo…

想象有个class用来表示网页浏览器。这样的class可能提供的众多函数中,有一些用来清除下载元素高速缓存区、清除访问过的URLs的历史记录、以及移除系统中的所有cookies:

class WebBrowser{
public:void clearCache();void clearHistory();void removeCookies();
};

许多用户会想一整个执行这些动作,因此WebBrowser也提供一个函数:

void clearEverything();
//调用clearCache,clearHistory和removeCookies

这一机能也可由一个non-member函数调用适当的member函数而提供出来:

void clearBrowser(WebBrowser& wb)
{wb.clearCache();wb.clearHistory();wb.removeCookies();
}

那么,哪一个比较好?

面向对象守则要求数据应该尽可能被封装,然而与直观相反地,member函数clearEverything带来的封装性比non-member函数clearBrowser低。此外,提供non-member函数可允许对WebBrowser相关机能有较大的包裹弹性(packaging flexibility),而那最终导致较低的编译相依度,增加WebBrowser的可延伸性。

对于封装,愈多东西被封装,改变哪些东西的能力也就愈大。

对于对象内的数据,愈少代码可以看到数据(也就是可以访问它),愈多的数据可被封装,而我们也就愈能自由地改变对象数据。愈多函数可访问它,数据的封装性就愈低。

若你要在一个member函数和一个non-member,non-friend函数之间做抉择,而且两者提供相同机能,那么,导致较大封装性的是non-member non-friend函数,因为它并不增加“能够访问class内的private成分”的函数数量。这解释了为什么clearBrowser比everyEverything更受欢迎:它导致了WebBrowser class有较大封装性。

但这个论述只适用于non-member non-friend函数。且只因在意封装性而让函数“称为class的non-member”,并不意味着它“不可以是另一个class的member”。

在C++中比较自然的做法是让clearBrowser成为一个non-member函数并且位于WebBrowser所在的同一个namespace(命名空间)内:

namespace WebBrowserStuff{class WebBrowser{};void clearBrowser(WebBrowser& wb);
}

但这不只是为了看起来自然而已,因为想clearBrowser这样的函数是个“提供便利的函数”,若它既不是member也不是friend,就没有对WebBrowser的特殊访问权力,也就不能提供“WebBrowser客户无法以其他方式取得”的机能。

将所有便利函数放在多个头文件内但隶属同一个命名空间,意味客户可以轻松扩展这一组便利函数。他们需要做的就是添加更多non-member non-friend函数到此命名空间内。

例如,若某个WebBrowser客户决定写些与影像下载相关的便利函数,他只需在WebBrowserStuff命名空间内建立一个头文件,内含那些函数的声明即可。新函数就像其他旧有的便利函数那样可用且整合为一体。这是class无法提供的另一个性质,因为class定义式对客户而言是不能扩展的。

总结

宁可拿non-member non-friend函数替换member函数。这样做可以增加封装性、包裹弹性和技能扩充性。 

http://www.yidumall.com/news/38908.html

相关文章:

  • 网站兼职做计划赚小钱邯郸网站优化
  • 利用表格布局做网站步骤google关键词查询工具
  • 手机上怎么创建wordpress搜索引擎排名优化
  • 网站加栏目中小企业网站制作
  • wordpress 插件 上传seo营销推广服务公司
  • 国内家居行业网站开发推广普通话手抄报简单漂亮
  • wordpress后台登录改地址扬州seo优化
  • 做网站提供服务器吗windows优化大师收费
  • wordpress做的网站效果6舟山百度seo
  • 政府网站建设和数据开放共享重庆网络推广外包
  • 寻找大连网站建设宁波seo外包方案
  • 免费网站建设seo8个公开大数据网站
  • 微网站和app的区别班级优化大师手机版下载(免费)
  • 江苏省城乡建设局网站流量宝
  • 福州网站建设公司哪家比较好武安百度seo
  • 番禺品牌型网站免费网站统计
  • 网站推广服务产品如何在网上推广
  • 西安seo网站排名优化公司网站建设技术
  • 网站报价云盘网页版登录
  • 郑州建站网竞价托管哪家专业
  • 如何做优惠券网站谷歌关键词挖掘工具
  • 移动网站做微信小程序网络推广的细节
  • 南通做网站的花云免费永久注册顶级域名网站
  • zblog和wordpress有什么区别北京优化网站推广
  • 淄博专业网站建设价格网址导航推广
  • 网站免费建站 图标石家庄百度快速排名优化
  • 如何选择宜昌网站建设湖南广告优化
  • 开发建设网站新东方培训机构官网
  • 制作外贸网站的公司自己做的网站怎么推广
  • 北京网站主题制作品牌推广的方式