- 1、本文档共37页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
26. 27. 28.每个派生类对象由派生类中定义的非静态成员加上一个或多个基类子对象构成。这一事实影响着派生类对象的构造、复制、赋值和撤销。当构造、复制、赋值和撤销派生类类型对象时,也会构造、复制、赋值和撤销这些基类对象。 构造函数和得复制控制成员不能继承,每个类定义自己构造函数和复制控制成员。象任何类一样,如果类不定义自己的默认构造函数和复制控制成员,就使用合成版本的。 * * * 由于Bulk_item具有内置类型的成员,所以应定义自己的默认构造函数。它用初始化列表初台化min_qty, discount。还隐式调用Item_base的默认构造函数初始化对象的基类部分。运行这个构造函数的效果是,首先使用权用Item_base的默认构造函数初始化Item_base部分,它将isbn置为空串,并 price置为0。 Item_base的构造函数执行完毕后,再初始化 Bulk_item部分的成员,并执行构造函数的函数体。 * 派生类构造函数的初始化列表只能初始化派生类的成员,不能直接初始化继承的成员。派生类构造函数通过将基类包含在构造函数初始化列表中来间接初始化继承成员。 * * * 当一个类撤销时,编译器会调用类的析构函数。对象撤销的顺序与构造顺序相反。首先运行派生类的析构函数,然后按继承层次依次向上调用各基类的析构函数。 * * 合成的派生类默认构造函数 派生类的合成默认构造函数与非派生类只有一点不同:除了初始化派生类的数据成员外,还初始化派生类对象的基类部分。对于Bulk_item: 调用Item_Base的默认构造函数,将isbn成同初始化为空串,price成员初始化为0。 用常规变量初始化规则初始化Bulk_item的成员。也就是说,qty, discount成员会是未初始化的。 定义默认构造函数 由于Bulk_item具有内置类型的成员,所以应定义自己的默认构造函数。它用初始化列表初台化min_qty, discount。还隐式调用Item_base的默认构造函数初始化对象的基类部分。运行这个构造函数的效果是,首先使用权用Item_base的默认构造函数初始化Item_base部分,它将isbn置为空串,并 price置为0。 Item_base的构造函数执行完毕后,再初始化 Bulk_item部分的成员,并执行构造函数的函数体。 向基类构造函数传递实参 Class Bulk_item:public Item_base{ public: Bulk_item(const std::string book, double sales_price, std::size_t qty=0,double disc_rate=0.0):Item_base(book,sales_price),min_qty(qty),discount(disc_rate){} } 调用方法: Bulk_item bul(“0-201-82470-1”,50,5,0.19); 在派生类构造函数中使用默认实参 Class Bulk_item:public Item_base{ Public: Bulk_item(const std::string book=“”, double sales_price=0.0, std::size_t qty=0,double disc_rate=0.0): Item_base(book, sales_price), min_qty(qty), discount(disc_rate){} } 以上构造函数中为每个形参提供默认值,可用0到4个实参使用它。 只能初始化直接基类 一个类只能初始化自己的直接基类。直接基类就是在派生列表中指定的类。设C类从B类派生,B类从A类派生。则C类中包含着B类和A类中定义的成员。但B是C的直接基类。A为C的间接基类。虽然每个C类对象包含一个A类部分,但C的构造函数不能直接初始化A。需要C初始化B,B的构造函数再初始化A。这一限制的原因是,类B的作者已经指定了怎样构造和初始化B类型的对象。像B的任何用户一样,类C的作者无权改变这个规约。 析构函数 析构函数的工作用于撤销成员。但是,派生类的析构函数不负责撤销基类对象的成员。每个析构函数只负责清除自己的成员。编译器总是显式调用派生类对象基类部分的析构函数。 Class Derived:public Base{ public: //Base::~Base invoked automatically ~Derived(){/*do what it takes to clean up derived members*/} } 虚析构函数 当删除指向动态分配对象的
您可能关注的文档
- 铝电解电容器退化分析及故障预诊断 EI收录.pdf
- 铝电解电容器退化分析及故障预诊断.pdf
- 马丁冻干为您提供食品冻干机选型参数和食品冻干工艺系数.pdf
- 马克思主义是人类思想史上伟大成果.pdf
- 马陆葡萄主要种类与特点.docx
- 马原讲义第七篇 共产主义是人类最崇高的社会理想.ppt
- 迈达斯学习第05节 荷载.doc
- 美工熟悉的软件与术语.doc
- 美国对台政策历史分析_杨金荣.pdf
- 美国儿童营养计划WIC项目的由来、内容和特色.pdf
- 2025年网络文学平台版权运营模式创新与版权保护体系构建.docx
- 数字藏品市场运营策略洞察:2025年市场风险与应对策略分析.docx
- 全球新能源汽车产业政策法规与市场前景白皮书.docx
- 工业互联网平台安全标准制定:安全防护与合规性监管策略.docx
- 剧本杀剧本创作审核标准2025年优化与行业自律.docx
- 2025年新能源电动巡逻车在城市安防中的应用对城市环境的影响分析.docx
- 全渠道零售案例精选:2025年行业创新实践报告.docx
- 2025年网约车司乘纠纷处理机制优化与行业可持续发展报告.docx
- 2025年宠物烘焙食品市场法规政策解读:合规经营与风险规避.docx
- 2025年宠物行业数据安全监管政策影响分析报告.docx
文档评论(0)