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

湛江网站建设策划天津网站建设费用

湛江网站建设策划,天津网站建设费用,电商网站模板,印刷网站建设价格一.一些思考 继承是面向对象的三个特性之一。这篇文章我们从底层的角度去理解什么是继承。他的作用是什么。首先继承的出现是更好的避免代码的重复冗余。要理解一件事很重要#xff0c;C其实是C的延申。那么C的出现是为了解决C语言上C祖师爷认为不友好的事情#xff0c;也为… 一.一些思考 继承是面向对象的三个特性之一。这篇文章我们从底层的角度去理解什么是继承。他的作用是什么。首先继承的出现是更好的避免代码的重复冗余。要理解一件事很重要C其实是C的延申。那么C的出现是为了解决C语言上C祖师爷认为不友好的事情也为了简化代码的复杂度将更多的事情交给编译器去做而不是程序员自己本身。举个例子C在类的创建和释放的过程中会自动调用构造函数和析构函数这是上一篇文章提到的C语言没有这个功能。那么C语言难道就做不到了吗其实不然C语言可以自己显示的调用函数来模拟完成构造函数和析构函数。所以说面向对象是一种编程思想而不是代码本身的特性。关于这一点的理解是我研究C程序中glibc对程序的初始化和程序的退出时的函数调用链思考而得。本质上其实就是在做构造函数和析构函数的工作。有了这个思考那么继承的出现我们也能去思考。 二.继承是什么 C在定义一些类的时候我们很可能会发现有些共同的特性也就是相当的数据字段。比如说 创建一个学生类 class Student{public:sting name;int age;float height;int class_num; }; 比如我创建一个学生类有姓名年龄身高班级。 创建一个老师类 class Teacher{public:string name;int age;float height;float wages;}; 现在我们又创建一个老师类依然是有四个成员属性。但是我们发现有三个属性是相同的如果写两份会显得很臃肿于是继承就出现了。我们写一个大家公有的类那么需要的时候直接继承就会显的很高逼格 class Person { public:string name;int age;int height;};class Student :public Person { public:int class_num; };class Teacher :public Person { public:int wages; };我们看到将公有的属性提取出来并且自身独有的依然在自己的类中。现在我们分别创建一个学生对象和老师对象看看能不能访问公有的成员 我们看到是没有问题的。下面我们看看汇编是如何执行的 由于字符串还需要做些特殊处理我们只看数字赋值我们发现在创建的类中确实有Person字段的赋值因为rbp-0x80的位置就是s1对象的起始位置。也就是this指针。布局相当于这样 相应的老师对象的创建赋值也是一样的过程 因此我们知道了父类也就是基类在继承的时候布局是这样的 因此我们可以明白在继承的时候父类和子类独有的属性将组合成一个新的类新的对象的首地址其实是指向父类的。因此就引出了一个新的概念既然如此我如果用父类对象的指针指向一个子类对象和一个子类对象指针指向子类岂不是一样的吗确实如此。我们写一个demo测试下 经过我们的测试发现确实是这么回事。那么他们有什么区别呢很显然是访问成员的限制用父类创建的指针只能访问父类的成员用子类创建的指针能够访问全部成员。也可以这么理解把父亲会的儿子也会父亲不会的儿子也会。可能这就是青出于蓝胜于蓝的代码体现吧。实验下是否是这样这里我用linux测试的其实是一样的 Student s1;s1.name Chenweixin;s1.age 1;s1.height 2;s1.class_num 2;Teacher t1;t1.name Guozhiwei;t1.age 1;t1.height 1;t1.wages -250;Student* p1 s1;Person* p2 s1;cout Person-namep2-namePerson-agep2-agePerson-height p2-height endl;cout Student-namep1-nameStudent-agep1-ageStudent-height p1-height endl; 此时我们通过指针去访问父类成员看看是不是一样的 我们看到没有任何问题那接着父类能访问子类的成员吗答案是否定的父类都没有子类的成员如何去访问此时我加了一句p2-class_num看看能不能通过父类指针找到子类成员 我们发现报错了。告诉我们没有成员叫class_num。但是其实这是编译器做的限制我们很清楚其实在height成员下面就是class_num成员只不过父类指针是没有权限去访问的。子类对象指针就不会出现这种问题 因此我们可以总结如下 继承的本质就是数据的复制 当发生继承的时候将父类的模板和子类独有的模板合二为一这个过程是编译器做的。那么对象创建成功后就会有这么模板的完全体。this指针指向的其实是父类的对象不管用父类指针访问还是子类指针访问都是一样的。只不过父类指针只能访问父类中的成员子类能够访问全部成员。多重继承的效果也是一样的。用个现代化术语来说谁是老祖宗谁排在前面。因此发生多重继承的时候最开始的地方是第一个父类以此类推完全体是依然是子类。 希望通过这篇博客能加深自己对继承的理解。
http://www.w-s-a.com/news/283501/

相关文章:

  • 网站建设辶金手指排名十二wordpress 当数据库
  • 无锡手机网站建设服务苏州展厅设计企业
  • 无锡网站制作需要多少钱北京二次感染最新消息
  • 网站开发视频播放无画面杭州房产信息网官网
  • 网站开发 改进如何创建公众号平台
  • wordpress网站响应很慢只有asp网站代码可以重新编译吗
  • 哪个网站教做饭做的好wordpress热点文章
  • 可以做推广东西的网站重庆网站建设 重庆网站制作
  • 珠海网站建设培训学校wordpress去版权 合法
  • 建设食品商购网站学校网站设计实验报告
  • 建个网站多少钱沭阳奥体小区做网站的
  • 广州视频网站建站公司php网页设计作业代码
  • 成都公司网站设计如何制作网址最简单的方法
  • 温州 做网站福建住房城乡建设部网站
  • 网站自动化采集成都网站设计费用
  • 广东专业网站定制建设淘宝网站的人员组织结构
  • 网站改版seo无锡有多少家公司
  • h5美食制作网站模板下载wordpress大学百度云
  • 零陵做网站建立网站的公司平台
  • 某企业电子商务网站建设网站开发实验结论
  • 自己做的网站突然打不开杭州哪些做网站公司好
  • 株洲专业建设网站免费cms内容管理系统
  • 网上建立网站赚钱网站建设方案书纯文字
  • 专业网站设计哪家好it外包合同模板
  • 个人网站备案都需要什么中小企业服务网
  • 佛山网站建设哪个在公司网站投简历该怎么做
  • 八戒网站做推广老域名全部失效请拿笔记好
  • iss服务器网站建设甘肃建设厅网站执业注册中心
  • 域名访问网站 过程网站 免费 托管运营
  • 下单的网站建设教程wordpress php7.1