- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
*classSleeperSofa:publicBed,publicSofa{public: SleeperSofa():Sofa(),Bed(){} voidFoldOut(){coutFoldoutthesofa.\n;}};voidmain(){ SleeperSofass; ss.SetWeight(20); coutss.GetWeight()endl;}运行结果为: 20第30页,共83页,星期日,2025年,2月5日*在Bed和Sofa继承Furniture中加上virtual关键字,这相当于说,“如果还没有Furniture类,则加入一个Furniture拷贝,否则就用有的那一个”。此时一个Sleepersofa在内存中的布局见图在虚拟继承的情况下,应用程序main()中引用GetWeight()不再模糊,我们得到了真正的图17-2所示的继承关系。-虚拟继承的虚拟和虚拟函数的虚拟没有任何关系。第31页,共83页,星期日,2025年,2月5日*虚基类及其派生类构造函数在整个继承结构中,直接或间接继承虚基类的所有派生类,都必须在构造函数的成员初始化表中给出对虚基类的构造函数的调用。如果未列出,则表示调用该虚基类的默认构造函数。在建立对象时,只有最新派生类的构造函数调用虚基类的构造函数,该派生类的其它基类对虚基类构造函数的调用被忽略。虚基类的构造函数先于非虚基类的构造函数执行。第32页,共83页,星期日,2025年,2月5日*应用举例人员管理系统:有三类人员:经理、技术人员、推销人员,还有销售经理。月薪:经理:8000元/月;技术人员:100元/小时;推销人员:4%提成;销售经理:5000元月+5%提成。输出每个人员的月工资信息。第33页,共83页,星期日,2025年,2月5日*应用举例类设计基类:employee派生类:technician、manager和salesman多继承派生类:salesmanager第34页,共83页,星期日,2025年,2月5日*classemployee{protected:char*name; //姓名intindividualEmpNo; //个人编号floataccumPay; //月薪总额staticintemployeeNo; //本公司职员 编号目前最大值public:employee(); //构造函数~employee(); //析构函数virtualvoidpay()=0; //计算月薪函数virtualvoiddisplayStatus()=0;//显示人员信息};第35页,共83页,星期日,2025年,2月5日*classtechnician:publicemployee//技术人员类{private:floathourlyRate; //每小时酬金intworkHours; //当月工作时数public:technician(); //构造函数voidpay(); //计算月薪函数voiddisplayStatus();//显示人员信息};第36页,共83页,星期日,2025年,2月5日*classsalesman:virtualpublicemployee//兼职推销员类{protected:floatCommRate;//按销售额提取酬金的百分比floatsales; //当月销售额public:salesman(); //构造函数voidpay(); //计算月薪函数voiddisplayStatus();//显示人员信息};第37页,共83页,星期日,2025年,2月5日*classmanager:virtualpublicemployee//经理类{protected:floatmonthlyPay; //固定月薪数public:manager(); //构造函数voidpay(); //计算月薪函数voiddisplayStatus();//显示人员信息};第38页,共83页
文档评论(0)