- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
构造函数链和析构函数链构造函数链constructorchaining构造一个类实例(创建对象),会导致继承链上的所有基类的构造函数都被依次调用。每个基类的构造函数都会先于其派生类的构造函数被调用。首先调用其基类的构造函数来初始化从基类中继承的数据成员;然后调用派生类自身的构造函数,初始化在派生类中新声明的数据成员。析构函数链destructorchaining所有析构函数都安相反顺序被自动调用,派生类的析构函数先被调用。先执行派生类的析构函数,再执行基类的析构函数,其顺序与执行构造函数时的顺序正好相反。注:若派生类中还有其它类对象,则还应该包含对该对象的初始化。 //理解构造函数与析构函数执行顺序#includeiostream.hclassCA{private: intx;protected: inty;public: CA(intxx,intyy) { x=xx,y=yy; coutInConstructorofCA\n;} ~CA() {coutInDestructorofCA\n;} voidsetX(inta) { x=a; } voidsetY(intb) { y=b; } intgetX() { returnx; } intgetY() { returny; }};classCB:publicCA//公有继承{ intz;public: CB(intxx,intyy,intzz=30):CA(xx,yy) { z=zz; coutInConstructorofCB\n;} ~CB() { coutInDestructorofCB\n; } intgetSum() { returny+getX(); }};voidmain(){ CBb(5,6,7); coutx=b.getX()\ty=b.getY()endl; coutx+y=b.getSum()endl;}运行结果:InConstructorofCAInConstructorofCBx=5y=6x+y=11InDestructorofCBInDestructorofCA提示:若要将某个类设计为基类,最好为它设计一个无参构造函数,以避免编程错误。例:classFruit{public: Fruit(intid) {}};classApple:publicFruit{public: Apple() {}};由于Apple是Fruit的派生类,Apple的构造函数会自动调用Fruit的无参构造函数,但是Fruit没有无实参构造函数,因此会产生一个编译错误。//student.hclassStudent{protected: intnum; charname[20]; charsex;public: Student(intnum,charn[20],chars); ~Student();};classStudent1:publicStudent{private: intage; charaddr[20];public: Student1(intnum,charn[20],chars,inta,charaddr[20]); voidshow(); ~Student1();};#includeiostream.h//student.cpp#includestring.h#includestudent.hStudent::Student(intnu,charn[],chars){ num=nu; strcpy(name,n); sex=s;}Student::~Student(){ coutinStudentdestructor!\n;}Student1::Student1(intnum,charn[20],chars,inta,charad[20]):Student(num,n,s){ age=a; strcpy(addr,ad);}voidStudent1::show(){ coutnum:numendl
您可能关注的文档
- M7U1Reading知识点最新完整版本.ppt
- PhotoshopCS4百个最佳操作技巧最新完整版本.docx
- Place Exchange:2023下半年户外广告程序化购买趋势报告最新完整版本.docx
- SPSS简介最新完整版本.ppt
- Stripe:数字贸易是如何重塑全球经济的最新完整版本.docx
- c2fd20223e氨基酸最新完整版本.docx
- candleinthewind风之烛歌词最新完整版本.doc
- ch04trees数据结构外文版最新完整版本.ppt
- ch07继承机制最新完整版本.ppt
- ch08多态性最新完整版本.ppt
- chapter01数据库系统概述最新完整版本.ppt
- chapter02激光原理的量子力学基础部分.ppt
- chapter22creditrisk资管所陈竑廷最新完整版本.ppt
- chapter26functionalgroupsandorganicreactions最新完整版本.ppt
- chapter2饮食与保健最新完整版本.ppt
- citrix企业级培训最新完整版本.ppt
- climbingmountscalablephysicalresourcerequirementsf最新完整版本.docx
- cmu高级机器学习计算生物学最新完整版本.docx
- cnki中国期刊全文数据库最新完整版本.ppt
- communicationbyphone英文版最新完整版本.ppt
文档评论(0)