当前位置: 首页 > news >正文 萧县城乡建设局网站施工企业应建立的安全健康与环境管理制度包括 news 2025/10/31 3:44:24 萧县城乡建设局网站,施工企业应建立的安全健康与环境管理制度包括,南宁市起全网络科技有限公司,wordpress getusers一、多态的概念 1.1、多态的概念 多态#xff1a;多种形态#xff0c;具体点就是去完成某个行为#xff0c;当不同的对象去完成时会产生出不同的状态。 举个例子#xff1a;比如买票这个行为#xff0c;当普通人买票时#xff0c;是全价买票#xff1b;学生买票时多种形态具体点就是去完成某个行为当不同的对象去完成时会产生出不同的状态。 举个例子比如买票这个行为当普通人买票时是全价买票学生买票时是半价买票军人 买票时是优先买票。 1.2、多态的分类 多态分为静态多态和动态多态 1)静态多态也称为静态绑定或前期绑定(早绑定)函数重载和函数模板实例化出多个函数本质也是函数重载。静态多态也称为编译期间的多态编译器在编译期间完成的编译器根据函数实参的类型(可能会进行隐式类型转换)可推断出要调用那个函数如果有对应的函数就调用该函数否则出现编译错误。 2)动态多态也称为动态绑定或后期绑定(晚绑定)在程序运行期间根据具体拿到的类型确定程序的具体行为调用具体的函数即运行时的多态。在程序执行期间(非编译期)判断所引用对象的实际类型根据其实际类型调用相应的方法。 父类指针或引用指向父类调用的就是父类的虚函数父类指针或引用指向子类调用的就是子类的虚函数 二、多态的定义及实现 2.1、多态的构成条件 多态是在不同继承关系的类对象去调用同一函数产生了不同的行为。比如Student继承了 Person。Person对象买票全价Student对象买票半价。 在继承中要构成多态还有两个条件 1. 必须通过基类的指针或者引用调用虚函数 2. 被调用的函数必须是虚函数且派生类必须对基类的虚函数进行重写 class Person //成人 {public:virtual void fun(){cout 全价票 endl; //成人票全价} }; class Student : public Person //学生 {public:virtual void fun() //子类完成对父类虚函数的重写{cout 半价票 endl;//学生票半价} }; void BuyTicket(Person* p) {p-fun(); }int main() {Student st;Person p;BuyTicket(st);//子类对象切片过去BuyTicket(p);//父类对象传地址 }2.2、虚函数 虚函数即被virtual修饰的类成员函数称为虚函数。 class Person { public:virtual void BuyTicket() { cout 买票-全价 endl;} }; 2.3、虚函数的重写 虚函数的重写(覆盖)派生类中有一个跟基类完全相同的虚函数(即派生类虚函数与基类虚函数的 返回值类型、函数名字、参数列表完全相同)称子类的虚函数重写了基类的虚函数。 class Person { public:virtual void BuyTicket() { cout 买票-全价 endl; } }; class Student : public Person { public:virtual void BuyTicket() {cout 买票-半价 endl; }/*注意在重写基类虚函数时派生类的虚函数在不加virtual关键字时虽然也可以构成重写(因 为继承后基类的虚函数被继承下来了在派生类依旧保持虚函数属性),但是该种写法不是很规范不建议 这样使用*//*void BuyTicket() { cout 买票-半价 endl; }*/}; void Func(Person p) { p.BuyTicket(); } int main() {Person ps;Student st;Func(ps);Func(st);return 0; } 虚函数重谢的两个特例 1、协变基类与派生类虚函数返回值类型不同 派生类重写基类虚函数时与基类虚函数返回值类型不同。即基类虚函数返回基类对象的指 针或者引用派生类虚函数返回派生类对象的指针或者引用时称为协变. class A{}; class B : public A {}; class Person { public:virtual A* f() {return new A;} }; class Student : public Person { public:virtual B* f() {return new B;} }; 2、析构函数的重写(基类与派生类析构函数的名字不同) 如果基类的析构函数为虚函数此时派生类析构函数只要定义无论是否加virtual关键字 都与基类的析构函数构成重写虽然基类与派生类析构函数名字不同。虽然函数名不相同 看起来违背了重写的规则其实不然这里可以理解为编译器对析构函数的名称做了特殊处 理编译后析构函数的名称统一处理成destructor。 class Person { public:virtual ~Person() {cout ~Person() endl;} }; class Student : public Person { public:virtual ~Student() { cout ~Student() endl; } }; // 只有派生类Student的析构函数重写了Person的析构函数下面的delete对象调用析构函 数才能构成多态才能保证p1和p2指向的对象正确的调用析构函数。 int main() {Person* p1 new Person;Person* p2 new Student;delete p1;delete p2;return 0; } 2.4、override 和 final final修饰虚函数表示该虚函数不能再被重写 class Car { public:virtual void Drive() final {} }; class Benz :public Car { public:virtual void Drive() {cout Benz-舒适 endl;} }; override: 检查派生类虚函数是否重写了基类某个虚函数如果没有重写编译报错。 class Car{ public:virtual void Drive(){} }; class Benz :public Car { public:virtual void Drive() override {cout Benz-舒适 endl;} }2.5、重载、覆盖重写、隐藏重定义的·对比 三、抽象类 3.1、抽象类概念 在虚函数的后面写上 0 则这个函数为纯虚函数。包含纯虚函数的类叫做抽象类也叫接口 类抽象类不能实例化出对象。派生类继承后也不能实例化出对象只有重写纯虚函数派生 类才能实例化出对象。纯虚函数规范了派生类必须重写另外纯虚函数更体现出了接口继承。 class Car { public:virtual void Drive() 0; }; class Benz :public Car { public:virtual void Drive(){cout Benz-舒适 endl;} }; class BMW :public Car { public:virtual void Drive(){cout BMW-操控 endl;} }; void Test() {Car* pBenz new Benz;pBenz-Drive();Car* pBMW new BMW;pBMW-Drive(); } 3.2、接口继承和实现继承 普通函数的继承是一种实现继承派生类继承了基类函数可以使用函数继承的是函数的实 现。虚函数的继承是一种接口继承派生类继承的是基类虚函数的接口目的是为了重写达成 多态继承的是接口。所以如果不实现多态不要把函数定义成虚函数。 四、多态的实现原理 「多态」的关键在于通过基类指针或引用调用一个虚函数时编译时不能确定到底调用的是基类还是派生类的函数运行时才能确定。 4.1、虚函数表 class A { public:int i;virtual void Print() { } // 虚函数 };class B { public:int n;void Print() { } };int main() {A a;B b;cout sizeof(a) , sizeof(b);return 0; }A对象当中除了i成员外实际上还有一个指针_vfptr放在对象的前面有些平台可能会放到对象的最后面这个跟平台有关。 对象中的这个指针叫做虚函数表指针简称虚表指针虚表指针指向一个虚函数表简称虚表每一个含有虚函数的类中都至少有一个虚表指针。 虚表当中存储的就是虚函数的地址因为父类当中的Func1和Func2都是虚函数所以父类对象b的虚表当中存储的就是虚函数Func1和Func2的地址。 通过上面的知识铺垫发现一下几个问题 1. 派生类对象d中也有一个虚表指针d对象由两部分构成一部分是父类继承下来的成员虚表指针也就是存在部分的另一部分是自己的成员。 2. 基类b对象和派生类d对象虚表是不一样的这里我们发现Func1完成了重写所以d的虚表 中存的是重写的Derive::Func1所以虚函数的重写也叫作覆盖覆盖就是指虚表中虚函数 的覆盖。重写是语法的叫法覆盖是原理层的叫法。 3. 另外Func2继承下来后是虚函数所以放进了虚表Func3也继承下来了但是不是虚函 数所以不会放进虚表。 4. 虚函数表本质是一个存虚函数指针的指针数组一般情况这个数组最后面放了一个nullptr。 5. 总结一下派生类的虚表生成a.先将基类中的虚表内容拷贝一份到派生类虚表中 b.如果派生类重写了基类中某个虚函数用派生类自己的虚函数覆盖虚表中基类的虚函数 c.派生类自己新增加的虚函数按其在派生类中的声明次序增加到派生类虚表的最后。 6. 虚函数存在哪的虚表存在哪的 虚函数存在虚表虚表存在对象中。注意上面的回答的错的。注意虚表存的是虚函数指针不是虚函数虚函数和普通函数一样的都是存在代码段的只是他的指针又存到了虚表中。另外对象中存的不是虚表存的是虚表指针。 1、虚表指针在构造函数阶段初始化列表填入到对象中虚表则是在编译时就生成好了。 2、虚表里面放的是虚函数地址虚函数和普通函数一样编译完成以后都是放在代码段中。 3、一个类中所有的虚函数都会放在虚表中。 4、子类会将父类的虚表拷贝一份然后用重写的虚函数地址覆盖掉原来虚表中的函数地址因此虚函数的重写也叫虚函数的覆盖。 文章转载自: http://www.morning.fgkwh.cn.gov.cn.fgkwh.cn http://www.morning.dmhs.cn.gov.cn.dmhs.cn http://www.morning.jxfmn.cn.gov.cn.jxfmn.cn http://www.morning.knlbg.cn.gov.cn.knlbg.cn http://www.morning.wkws.cn.gov.cn.wkws.cn http://www.morning.rtbhz.cn.gov.cn.rtbhz.cn http://www.morning.ksgjn.cn.gov.cn.ksgjn.cn http://www.morning.rbrd.cn.gov.cn.rbrd.cn http://www.morning.wxccm.cn.gov.cn.wxccm.cn http://www.morning.nynlf.cn.gov.cn.nynlf.cn http://www.morning.wsnjn.cn.gov.cn.wsnjn.cn http://www.morning.ygpdm.cn.gov.cn.ygpdm.cn http://www.morning.lwzpp.cn.gov.cn.lwzpp.cn http://www.morning.bpmfn.cn.gov.cn.bpmfn.cn http://www.morning.rcttz.cn.gov.cn.rcttz.cn http://www.morning.jcffp.cn.gov.cn.jcffp.cn http://www.morning.cnfxr.cn.gov.cn.cnfxr.cn http://www.morning.shnqh.cn.gov.cn.shnqh.cn http://www.morning.pngfx.cn.gov.cn.pngfx.cn http://www.morning.dtlqc.cn.gov.cn.dtlqc.cn http://www.morning.qwbls.cn.gov.cn.qwbls.cn http://www.morning.fdrb.cn.gov.cn.fdrb.cn http://www.morning.hdscx.cn.gov.cn.hdscx.cn http://www.morning.trsfm.cn.gov.cn.trsfm.cn http://www.morning.jmspy.cn.gov.cn.jmspy.cn http://www.morning.ljsxg.cn.gov.cn.ljsxg.cn http://www.morning.qcrhb.cn.gov.cn.qcrhb.cn http://www.morning.zfhzx.cn.gov.cn.zfhzx.cn http://www.morning.syrzl.cn.gov.cn.syrzl.cn http://www.morning.dspqc.cn.gov.cn.dspqc.cn http://www.morning.swlwf.cn.gov.cn.swlwf.cn http://www.morning.hnkkf.cn.gov.cn.hnkkf.cn http://www.morning.knnhd.cn.gov.cn.knnhd.cn http://www.morning.ldsgm.cn.gov.cn.ldsgm.cn http://www.morning.trpq.cn.gov.cn.trpq.cn http://www.morning.gtmgl.cn.gov.cn.gtmgl.cn http://www.morning.djwpd.cn.gov.cn.djwpd.cn http://www.morning.rhnn.cn.gov.cn.rhnn.cn http://www.morning.gfprf.cn.gov.cn.gfprf.cn http://www.morning.mrkbz.cn.gov.cn.mrkbz.cn http://www.morning.zbjfq.cn.gov.cn.zbjfq.cn http://www.morning.tnbsh.cn.gov.cn.tnbsh.cn http://www.morning.pzrpz.cn.gov.cn.pzrpz.cn http://www.morning.qpmwb.cn.gov.cn.qpmwb.cn http://www.morning.dtnzk.cn.gov.cn.dtnzk.cn http://www.morning.lxqyf.cn.gov.cn.lxqyf.cn http://www.morning.jphxt.cn.gov.cn.jphxt.cn http://www.morning.lbrwm.cn.gov.cn.lbrwm.cn http://www.morning.gzttoyp.com.gov.cn.gzttoyp.com http://www.morning.tgtrk.cn.gov.cn.tgtrk.cn http://www.morning.qmncj.cn.gov.cn.qmncj.cn http://www.morning.qkcyk.cn.gov.cn.qkcyk.cn http://www.morning.zlkps.cn.gov.cn.zlkps.cn http://www.morning.xfdkh.cn.gov.cn.xfdkh.cn http://www.morning.qncqd.cn.gov.cn.qncqd.cn http://www.morning.dysgr.cn.gov.cn.dysgr.cn http://www.morning.lfbzg.cn.gov.cn.lfbzg.cn http://www.morning.ykwgl.cn.gov.cn.ykwgl.cn http://www.morning.ywpwg.cn.gov.cn.ywpwg.cn http://www.morning.pxbrg.cn.gov.cn.pxbrg.cn http://www.morning.wrbnh.cn.gov.cn.wrbnh.cn http://www.morning.ntwxt.cn.gov.cn.ntwxt.cn http://www.morning.rtmqy.cn.gov.cn.rtmqy.cn http://www.morning.kntsd.cn.gov.cn.kntsd.cn http://www.morning.yptwn.cn.gov.cn.yptwn.cn http://www.morning.jwmws.cn.gov.cn.jwmws.cn http://www.morning.ryxbz.cn.gov.cn.ryxbz.cn http://www.morning.qdxkn.cn.gov.cn.qdxkn.cn http://www.morning.rqmr.cn.gov.cn.rqmr.cn http://www.morning.tfpbm.cn.gov.cn.tfpbm.cn http://www.morning.kryn.cn.gov.cn.kryn.cn http://www.morning.stpkz.cn.gov.cn.stpkz.cn http://www.morning.rdxnt.cn.gov.cn.rdxnt.cn http://www.morning.mlmwl.cn.gov.cn.mlmwl.cn http://www.morning.jntdf.cn.gov.cn.jntdf.cn http://www.morning.gzgwn.cn.gov.cn.gzgwn.cn http://www.morning.zpstm.cn.gov.cn.zpstm.cn http://www.morning.jjmrx.cn.gov.cn.jjmrx.cn http://www.morning.qnsmk.cn.gov.cn.qnsmk.cn http://www.morning.kmjbs.cn.gov.cn.kmjbs.cn 查看全文 http://www.tj-hxxt.cn/news/264139.html 相关文章: 网站如果实现微信支付吗网站建设管理制度落实 网站被黑能黑多长时间创新创业大赛项目计划书 企业网站的建立之前必须首先确定阿里云网站申请用途 家具网站开发设计任务书解决wordpress慢 易书网上书城网站建设方案wordpress更改图片大小 个人网站服务器租用江苏州 网站制作 怎么做qq钓鱼网站哈尔滨权威做网站 建站教程的实现方式wordpress添加作者 changer网站建设安卓版网页制作软件 告诉搜索引擎网站建设中优化营商环境条例全文 优设网网站做微网站的公司 巴州网站建设wordpress内容函数 最低网网站多少钱网站推广的重要性 php做网站需要html仿 wordpress 实现微信绑定登录网站成都住建局官网平台登录 58做二手车网站应该怎么推广网站建设基本功能 江津网站建设方案无锡万度网站建设 中国人自己的空间站wordpress分享此文章 网站备案的链接重庆公司注册网站 化妆品网站建设推广方案做网站如何收费 网站需备案设计素材网站哪个好用 提高网站公信力 单仁闵行区 网站美工做专题尺寸多少?网站备案 法人 wordpress连不上mysql8企业商务网站优化 中国医院建设协会网站首页带dede后台的整套网站源码 数据库连接不上 国外 网站开发框架佛系汉化组wordpress博客 马鞍山市建设银行网站wordpress如何修改php 手机版网站公司的关键词难易度分析 软件大全链接网站湘潭网站建设 磐石网络优质 郑州做网站优化公上市装修公司排名前十强