
发表日期: 2021-04-25 12:50:50 浏览次数:110
宿迁网站制作要多少钱【域名企业邮箱服务器注册申请办理】宿迁网络优化公司哪家好、宿迁软件开发外包价格、宿迁高端企业网站页面制作设计专业公司、宿迁微信公众号小程序购物支付搭建制作公司
宿迁,简称宿,别称水城,古称下相、宿豫、钟吾等,江苏省地级市,宿迁位于长三角北翼,江苏省北部,是长三角北翼区域性综合交通枢纽, [1] 地处徐州、连云港、淮安中心地带。宿迁是江苏省沿海地区向中西部辐射的重要门户城市 [2] ,是徐州都市圈、江淮生态经济区核心城市 [3] 、一带一路节点城市 [4] 。截至2020年6月,宿迁下辖2区3县 [5] ,总面积8555平方千米。截至2019年末,宿迁户籍人口592.36万 [6] 。
宿迁是西楚霸王项羽的故乡,有着5000多年的文明史和2700多年的建城史,曾是泗水国、钟吾国、宿国都城,历史悠久,人文荟萃,素有“华夏文明之脉、江苏文明之根、淮河文明之源、楚汉文化之魂”之称 [7] 。宿迁是酒文化的发源地之一,有中国白酒之都称号 [8] ,洋河、双沟两大名酒出产于此。宿迁是典型的苏北水乡,坐拥骆马湖、洪泽湖两大淡水湖,大运河、古黄河、淮沭新河等众多河流镶嵌其间。乾隆皇帝六下江南五次驻跸于此,赞叹宿迁为“第一江山春好处” [9] 。
宿迁是首批12个社会信用体系建设示范城市 [10] ,是中国优秀旅游城市 [11] 、国家园林城市 [12] 、国家卫生城市 [13] 、全国文明城市 [8] 。2020年10月,宿迁被评为全国双拥模范城(县) [14] 。
最后,仅在明确需要使用覆盖时才应该允许覆盖。没有虚函数的类比有虚函数的类更健壮且更易于维护。一般来说,如果API没有在其内部调用某个特定的方法,那么此方法很可能不应声明为虚方法。当潜在的子类与基类之间形成一种“is-a”的关系时,继承才是有意义的,这种情况下应该允许继承。
实际上,Herb Sutter指出,应该将虚函数声明为私有的,并且仅在派生类需要调用虚函数的基类实现时才将其声明为受保护的派生类(Sutter, 2001)。因此,Sutter建议接口应当是非虚的,同时在适当的情况下使用模板方法(Template Method)设计模式。这通常称为非虚拟接口惯用法(Non-Virtual Interface idiom, NVI)。
如果你仍然决定支持继承,那么确保你设计的API能够安全地使用继承。谨记以下几点原则。
(1) 如果类包含任一虚函数,那么必须将析构函数声明为虚函数。这样子类就可以释放其可能申请的额外资源。
(2) 一定要编写文档,说明类的方法是如何相互调用的。如果客户想要为某个虚函数提供替代实现,那么他们需要知道,在虚函数实现中需要另外调用哪些方法以维持对象的内部完整性。
(3) 绝不在构造函数或析构函数中调用虚函数,这些调用不会指向子类(Meyers, 2005) 。这是一条必须知道的优秀准则,尽管调用虚函数并不影响API的外部接口。
提示 避免将函数声明为可以重写的函数(虚的),除非你有合理且迫切的需求。
简化API是一项困难的任务。在减少API函数数目与使API易于各种客户使用之间存在天然的矛盾。大多数API设计者面临这样的问题,是保持API纯粹和集中,还是允许便捷包装(convenience wrappers)。(术语便捷包装指封装了多个API调用的实用程序,它能提供更简单的高层操作。)
一方面,有人认为API应该仅提供一个方法,仅执行一项任务。这确保了API是最小化的、集中的、一致的且易于理解的,还减少了实现的复杂性,并具备更稳定、更易于调试和维护等优点。Grady Booch称其为原语性(primitiveness),即原语方法需要访问类的内部细节以便高效地实现,而非原语方法可以完全基于原语方法进行构建且不需要访问任何内部状态(Booch et al., 2007)。
另一方面,也有人认为API应该让简单的事情更简单。不应该要求客户编写大量代码完成基础任务。因为这么做会导致样板代码被大量复制粘贴到源码的其他部分。一旦代码块被复制,就会产生潜在的代码不一致等问题。不过,你也许想将API为多种客户服务,这些客户中有人需要能够灵活地控
制,有人则需要尽量简单地完成一项任务。
这两个目标都是合理的。所幸它们并不互相排斥。有几种方法可以为核心API的功能提供更高层次的便捷包装,而不淡化其主要目标。重要的一点是,不要将便捷API与核心API混在同一个类中。也就是说,应该创建补充类包装核心API的某些公有功能。便捷类应该与核心API完全隔离,比如将它们
放在不同的源文件中甚至是在完全独立的库中。这样做还有一个额外的好处,就是确保了便捷API只依赖于核心API的公有接口,而不依赖于任何内部的方法或类。让我们看一个真实的例子。
OpenGL API提供了一个方法,可以编写平台无关的2D和3D应用程序,此方法操作的对象都是简单的图元(如点、线和多边形),图元可以被变换、点亮以及光栅化到帧缓冲区中。OpenGL API十分强大,但它的定位是一个底层API。例如,在OpenGL中创建一个球体需要将其显式地建模为由多个小
的平面多边形构成的表面,如下面的代码片段所示:
for(int i=0; i<=stacks; ++i){
GLfloat stack0=((i-1.0)/stacks-0.5)*M_PI;
GLfloat stack1=((GLfloat)i/stacks-0.5)*M_PI;
GLfloat z0=sin(stack0);
GLfloat z1=sin(stack1);
GLfloat r0=cos(stack0);
GLfloat r1=cos(stack1);
glBegin(GL_QUAD_STRIP);
for(int j=0; j<=slices; ++j)
{
GLfloat slice=(j-1.0)*2*M_PI/slices;
GLfloat x=cos(slice);
GLfloat y=sin(slice);
glNormal3f(x*r0, y*r0, z0);
glVertex3f(x*r0, y*r0, z0);
glNormal3f(x*r1, y*r1, z1);
glVertex3f(x*r1, y*r1, z1);
}
glEnd();}复制代码然而,多数OpenGL的实现也包含了OpenGL实用库(OpenGL Utility Library,GLU)。GLU是一个基于OpenGL API构建的API,它提供了更高层的函数,如mip-map生成、坐标变换、二次曲面、多边形镶嵌(polygon tessellation)以及简单摄像定位(simple camera positioning)。这些函数都被定义在一个与OpenGL完全独立的库中,同时为了与核OpenGL API区分,所有的函数名均以glu作为前缀。例如,如下代码片段展示了使用GLU创建一个球体有多么简单。

宿迁网站制作要多少钱【域名企业邮箱服务器注册申请办理】宿迁网络优化公司哪家好、宿迁软件开发外包价格、宿迁高端企业网站页面制作设计专业公司、宿迁微信公众号小程序购物支付搭建制作公司
服务热线
顶部
备案号: 苏ICP备11067224号
CopyRight © 2011 书生商友信息科技 All Right Reserved
24小时服务热线:400-111-6878 E-MAIL:1120768800@qq.com QQ:1120768800
网址: http://www.768800.com 网站建设:上往建站
关键词: 网站建设| 域名邮箱| 服务器空间| 网站推广| 上往建站| 网站制作| 网站设计| 域名注册| 网络营销| 网站维护|
企业邮箱| 虚拟主机| 网络建站| 网站服务| 网页设计| 网店美工设计| 网站定制| 企业建站| 网站设计制作| 网页制作公司|
400电话办理| 书生商友软件| 葬花网| 调温纤维| 海洋馆运营维护| 北京保安公司| 殡仪馆服务| 殡葬服务| 苏州殡葬一条龙| 朝阳殡葬| 苏州殡葬服务|
欢迎您免费咨询,请填写以下信息,我们收到后会尽快与您联系
服务热线:400-111-6878