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

找企业案例的网站免费室内设计软件有哪些

找企业案例的网站,免费室内设计软件有哪些,宣城网站建设费用,医药企业网站模板Data 语义学#xff08;三#xff09; “继承” 与 Data member 上期的这个继承的模块我们还剩下一个虚拟继承#xff08;virtual inheritance#xff09;没有讲#xff0c;现在我们就来看看吧。 虚拟继承#xff08;Virtual Inheritance#xff09; 虚拟继承本质就是…Data 语义学三 “继承” 与 Data member 上期的这个继承的模块我们还剩下一个虚拟继承virtual inheritance没有讲现在我们就来看看吧。 虚拟继承Virtual Inheritance 虚拟继承本质就是通过某种形式来实现共享继承使被继承的类在继承体系中只存在一个实例。最常用的就是解决菱形继承。 下面我们看一个熟悉的例子 这样我们就能够很清楚的知道多重继承和虚拟继承的区别而且我们也能看出在多重继承的体系下我们需要维护两个 ios base class object 这就造成了空间和效率上的浪费我们不仅要为这两个 ios object 分配空间我们还要同步对他们的修改操作来保证两个 object 是一样的。所以解决这个问题的关键就是导入虚拟继承virtual inheritance。 class ios { ... } class istream : public virtual ios { ... } class ostream : public virtual ios { ... } class iostream : public istream, public ostream { ... }但是在编译器中实现虚拟继承难度很高编译器需要一个足够有效的方法将 istream 和 ostream 各自维护的一个 ios subobject折叠成为一个由 iostream 维护的单一的 ios subobject并且还可以保存 base class 和 derived class 的指针以及 引用之间的多态指定的操作。polymorphism assignments。 一般的实现方法是这样的**Class 如果内含一个或多个 virtual base class subobjects像 istream 那样将被分割成两部分一个不变区域和一个共享区域。**不变区中的数据不管后继如何衍化总是拥有固定的 offset所以这一部分数据可以被直接存取。至于共享区域所表现的就是 virtual base class object。这一部分的数据其位置会因为每一个的派生操作而发生变化所以它们只可以被间接存取。各家编译器实现技术之间的差异就在于间接存取的方法不同。下面就为大家介绍这三种方法。 首先看看Vertex3d虚拟继承的层次结构。 class Point2d { public:... protected:float _x, _y; };class Vertex : public virtual Point2d { public:.... protected:Vertex *next; };class Point3d : public virtual Point2d { public:... protected:float _z; };class Vertetx3d : public Vertex, public Point3d { public:... protected:float mumble; };// 继承关系 // Point2d(_x, _y) // | // ____|____ // | | // Vertex(next) Point3d(_z) // | | // |________| // | // Vertex3d(mumble)**一般的布局策略是先安排好 derived class 的不变部分然后再建立其共享部分。**不同的编译器对 virtual inheritance 的实现的不同就体现在共享部分的实现上。 第一个方法在 derived class 种添加指向 virtual base class 的指针 直接上书上的例子 void Point3d::operator(const Point3d rhs) {_x rhs._x;_y rhs._y;_z rhs._z; }; // 在这种策略下这个运算符会被内部转换为 _vbcPoint2d-_x rhs._vbcPoint2d-_x; _vbcPoint2d-_y rhs._vbcPoint2d-_y; _z rhs._z;// 现在我们考虑另一种情况 Point2d *p2d pv3d; // 同样在这种策略下这个转换也会被内部转换为 Point2d *p2d pv3d ? pv3d-_vbcPoint2d : 0;这个实现模型有两个主要的缺点 每一个对象必须针对其每一个 virtual base class 背负一个额外的指针。然而理想上我们却希望 class object 有固定的负担不因为其 virtual base class 的个数而变化。由于虚拟继承串链的加长导致间接存取层次的增加。这里的意思是如果我有三层虚拟派生我就需要三次间接存取经由三个 virtual base class 指针。然而理想上我们却希望有固定的存取时间不因为虚拟派生的深度而改变。 对于第二缺点有些编译器会选择通过拷贝的操作取得所有的 nested virtual base class 指针放到 derived class object 之中。这就解决了“固定存取时间”的问题但是同时也付出一些空间上的代价。所以一般这些编译会提供一个选项——询问程序员是否要产生双重指针。 看看模型的布局 对于第一个缺点就引出了剩余的两个解决方案。 Microsoft 编译器引入了 virtual base class table。 每一个class object 如果有一个或多个 virtual class table就会由编译器安插一个指针指向 virtual base class table。至于正真的 vitual base class pointer 将会被放在该表格中。 在 virtual function table 中放置 virtual base class 的 offset而不是地址。 以上面的继承体系为例我们看看在这种策略下每一个类class的布局 上面的图很直观的呈现的这种将 virtual base class offset 和 virtual function table 结合的方法virtual function table 可经由正值或负值来索引。如果是正值很显然就是索引到了 virtual function table如果是负值则是索引到了 virtual base class offsets。 // 再来看看这个 operator void Point3d::operator(const Point3d rhs) {_x rhs._x;_y rhs._y;_z rhs._z; }// 在这种策略下编译器在内部做的转换如下 void Point3d::operator(const Point3d rhs) {(this _vptr_Point3d[-1])-_x (rhs rhs._vptr_Point3d[-1])-_x;(this _vptr_Point3d[-1])-_y (rhs rhs._vptr_Point3d[-1])-_y;_z rhs._z; }// 转换操作 Point2d *p2d pv3d; Point3d *p2d pv3d ? pv3d pv3d-_vptr_Point3d[-1] : 0;上面的每一种方法都是一种实现模型而不是一种标准。每一种模型都是用来解决 “存取 shared subobject 内的数据其位置会因每次派生操作而变化”所引发的问题。 一般而言virtual base class 最有效的运用形式就是一个抽象的 virtual base class没有任何 data member。 也就是我们所说的抽象类在该类中定义纯虚函数pure virtual function也称为接口interface。 还有一小节讲的是类成员指针data member pointer但是有点奇怪的是实验的结果跟书上显式的不一样这个等我弄明白了再更吧如果你们知道为什么求求出个文章吧。
http://www.dnsts.com.cn/news/147234.html

相关文章:

  • 东莞市专注网站建设服务机构和易企秀类似的软件免费的
  • 网站不备案 能打开吗推软件
  • 静安西安网站建设做公益活动的网站
  • 百度 seo排名查询衡水搜索引擎优化
  • 企业融资是做什么的seo优化易下拉霸屏
  • 大朗网站建设培训wordpress菜单与页面关联
  • 怎样设网站徐州建设银行网站
  • 公司企业如何做网站央企门户网站哪家做的最好
  • 网站模板 代码免费三合一网站是什么
  • 全英文外贸网站建设做地铁建设的公司网站
  • 网站开发基础知识网站资源如何做参考文献
  • 在门户网站做产品单页多少钱一天wordpress 优酷免广告插件
  • 有没有做家具特卖的网站天津网站建设兼职
  • 济南网站推广哪家好做外贸需要网站
  • wordpress多用户主题seo对网络推广的作用是
  • 怎么拥有个人网站wordpress免邮箱验证
  • 外贸公司网站怎么做网站怎样做seo推广
  • 深圳网站建设新闻江门地区网站建设公司
  • 有专门教做蛋糕的网站网站备案 途径
  • 营销型网站建设答辩大型网站开发流程
  • 校园网站建设情况统计表昆山开发区网站制作
  • 纯文本网站wordpress腾讯云搭建网站
  • 专业做化妆品的网站淘宝关键词查询工具
  • 国产成年做视频网站wordpress主题模板Git下载
  • 哪个网站可以做电视背景墙化妆品网站建设的设计思路
  • 深圳网站制作大运软件小镇怎样查网站有没有做CDN加速
  • 安阳哪里有学做网站的学校互联网培训机构排名前十
  • 企业网站建设栏目结构图门户网站建设推广
  • 企业邮箱查询网站滁州房地产网站建设网站
  • 如何建设简单网站全国拿货最便宜的网站