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

为什么做网站需要服务器网站建设公司取名

为什么做网站需要服务器,网站建设公司取名,抖音代运营法律案件,潍坊建设工程有限公司个人主页#xff1a;兜里有颗棉花糖#x1f4aa; 欢迎 点赞#x1f44d; 收藏✨ 留言✉ 加关注#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【C之路】#x1f48c; 本专栏旨在记录C的学习路线#xff0c;望对大家有所帮助#x1f647;‍ 希望我们一起努力、成长兜里有颗棉花糖 欢迎 点赞 收藏✨ 留言✉ 加关注本文由 兜里有颗棉花糖 原创 收录于专栏【C之路】 本专栏旨在记录C的学习路线望对大家有所帮助‍ 希望我们一起努力、成长共同进步。 目录 一、多继承以及菱形继承二、多继承引发的问题多继承二义性问题的解决方式方式一作用域解析运算符方式二虚拟继承 三、虚拟继承解决数据冗余和二义性的原理 一、多继承以及菱形继承 单继承一个子类只有一个直接父类时称这个继承关系为单继承。 比如 多继承一个子类有两个或以上直接父类时称这个继承关系为多继承。 比如 菱形继承菱形继承是多继承的一种特殊情况指一个派生类直接或间接地从两个或者更多个基类继承成员而这些基类又直接或间接地继承自同一个基类。 比如 下面是两种简单的菱形继承的模型 二、多继承引发的问题 C继承体系中的多继承虽然给我们提供了代码的灵活性和重用性但是也会引发一些问题多继承会引发菱形继承问题而菱形继承问题又会引发菱形虚拟继承问题。 下面来看菱形继承的问题 上面的对象成员模型构造中可以看出菱形继承有数据冗余和二义性的问题。在Assistant的对象中Person成员会有两份即_age有两份。 数据冗余问题本质就是浪费空间存在数据重复的问题比如Person中的_age要存储两份。二义性问题访问不明确如下图。 多继承二义性问题的解决方式 C是如何解决多继承带来的二义性问题呢 方式一作用域解析运算符 我们可以通过作用域解析运算符即::来解决多继承中的二义性问题。使用作用域解析运算符来明确指定调用哪个基类的成员函数或变量。 请看 方式二虚拟继承 虚拟继承用于解决菱形继承或多继承中的二义性问题的一种机制。通过使用virtual关键字在继承链中只创建一个共同基类的实例从而避免了二义性。 请看 class Person { public:string _name; // 姓名int _age; }; class Student : virtual public Person { protected:int _num; //学号 }; class Teacher : virtual public Person{ protected:int _id; // 职工编号 }; class Assistant : public Student, public Teacher { protected:string _majorCourse; // 主修课程 }; void Test1() {Assistant as;as.Student::_age 18;as.Teacher::_age 21;as._age 24; }解释 首先有一个基类 Person它包含了姓名 _name 和年龄 _age 两个成员变量。 接下来有两个派生类 Student 和 Teacher它们都以虚拟继承的方式继承自基类 Person。这样做是为了避免后续的Assistant 类在同时继承Student 和 Teacher 时包含了两个相同的 Person 实例导致的二义性问题。 最后有一个派生类 Assistant它同时继承自 Student 和 Teacher 类。由于 Student 和 Teacher都是以虚拟继承的方式继承自 Person在Assistant 类中就只会有一个共同的 Person 实例。 调试结果如下 三、虚拟继承解决数据冗余和二义性的原理 我们已经知道虚拟继承是C中的一种继承方式用于解决多重继承中的数据冗余和二义性问题。当一个类需要从多个基类中继承而这些基类又有共同的基类时就会产生二义性问题。 那虚拟继承又是如何解决这些问题的呢 现在我们来研究虚拟继承原理下面是一个简化的菱形继承继承体系请看 class A { public:int _a; }; class B : public A { public:int _b; }; class C : public A { public:int _c; }; class D : public B, public C { public:int _d; }; int main() {D d;d.B::_a 1;d.C::_a 2;d._b 3;d._c 4;d._d 5;return 0; }运行调试结果如下 监视窗口 内存窗口 可以看到上述代码中存在数据冗余的问题类D继承了类B和类C与此同时类B和类C都继承了类A所以可以看到在类D中有两个继承自类A的子对象分别来自类B和类C。因此在类D中存在数据冗余同一个成员变量_a在类D的内存布局中会出现两次一次来自类B的继承一次来自类C的继承。这是因为默认情况下多次继承同一个基类会导致该基类的成员在派生类中有多份副本。 下面来看虚拟继承是如何解决上述问题的请看 class A { public:int _a; }; class B : virtual public A//虚拟继承 { public:int _b; }; class C : virtual public A//虚拟继承 { public:int _c; }; class D : public B, public C { public:int _d; };实例一 int main() {D d;d.B::_a 1;d.C::_a 2;d._b 3;d._c 4;d._d 5;d._a 0;return 0; }下面是上述代码虚拟继承的调试内存窗口 示例二仅仅添加了对象D d2; int main() {D d;d.B::_a 1;d.C::_a 2;d._b 3;d._c 4;d._d 5;d._a 0;D d2;return 0; }现在再来看一下内存窗口 示例三再来看一个对象模型 int main() {B b;b._a 1;b._b 2;return 0; }示例四 int main() {D d;d._a 1;B b;b._a 2;b._b 3;B* ptr b;ptr-_a;ptr d;ptr-_a;return 0; }当指针 ptr 指向对象 b 或对象 d 时无论 ptr 指向的是哪个对象当使用 ptr-_a 访问类A的成员时编译器都会使用存储在类D对象中的偏移量来调整指针以便正确地访问虚基类A的成员变量 _a。 好了本文就到这里啦再见啦友友们
http://www.dnsts.com.cn/news/155851.html

相关文章:

  • 丝芙兰网站做的好差网站备案登陆用户名是什么
  • 建设企业网站e路护航官网下载外国做家具的网站
  • 鲜花网站建设的项目介绍烈焰传奇网页版
  • 深圳网站建设工作室一个域名多个网站
  • 计算机学院网站建设小程序开发制作多少钱
  • 为什么小城市做不出来好的网站电子商务主要学什么课程
  • 企业做网站的注意什么做cps需要什么样的网站
  • 皮具网站建设wordpress 当前分类id
  • 教做发绳的网站住建部网站资质查询中宏建设集团
  • 微网站如何做推广大兴网站设计
  • 免费制作动画网站公众号开发教程零基础
  • 怎么在百度建网站扬州立扬计算机培训网站建设怎么样
  • 网站运营成本营销型网站管理方案
  • html5移动端网站开发教程拖拽式网站建设
  • 做网站的内容网站的营销推广方案
  • 营销型网站建设多少钱写出网站开发的基本流程
  • php网站开发文章管理系统wordpress企业免费模板下载
  • 网站开发外文文献网站建设案例效果
  • 超值的扬中网站建设编辑网站教程
  • 公司支付网站建设费进什么费用做直播网站软件有哪些软件有哪些
  • 马鞍山网站建设公注册有限公司需要什么条件
  • 怎么样免费做网站阿里云 建设wordpress
  • ipv6跟做网站有关吗南京百度竞价推广公司排名
  • 看视频做那个网站好做本地团购网站怎么样
  • 网站首页布局的设计手机怎么登录网页版微信
  • 怎样查看网站服务商如何做视频网站的广告推广
  • 东莞网站优化哪家好宣传片拍摄费用
  • 有注入漏洞的网站源码北京企业名录大全
  • 佛山专业网站建设报价wordpress小说站数据
  • 呼伦贝尔做网站的中国机械加工网平台