- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
-*- #includeiostream.h class counter {public: counter(){v=0;} counter operator ++(); counter operator ++(int); void print(){coutvendl;} private: unsigned v; }; counter counter::operator ++() {v++; return *this; } counter counter::operator ++(int) {counter t; t.v=v++; return t; } void main() {counter c; for(int i=0;i8;i++) c++; c.print(); for(i=0;i8;i++) ++c; c.print(); } -*- 3 虚函数 3.1为什么要引入虚函数 #includeiostream.h class base { public: void who() {coutthis is the class of base!endl;} }; class derive1:public base { public: void who() {coutthis is the class of derive1!endl;} }; -*- class derive2:public base {public: void who() {coutthis is the class of derive2!endl;} }; main() { base obj,*ptr; derive1 obj1; derive2 obj2; ptr=obj; ptr-who(); ptr=obj1; ptr-who(); ptr=obj2; ptr-who(); obj1.who(); obj2.who(); return 1;} 通过指针引起的普通成员函数调用,仅仅与指针的类型有关,而与指针正指向什么对象无关。 此程序的意图是用ptr指针分别指向不同的对象,以便执行不同对象所对应的类的成员函数。 -*- this is the class of base! this is the class of base! this is the class of base! this is the class of derive1! this is the class of derive2! 为达到目的采取的方法: (1)采用显式的方式调用派生类的函数成员 例如: obj1.who()或obj2.who() (2)采用对指针的强制类型转换的方法, 例如:((derive1*)ptr)-who()或((derive2*)ptr)-who() -*- 关于类型转换 char ch; int i; 1Byte ch=(char)i; i=(int)ch; 1Byte 1Byte 1Byte 1Byte -*- Fish对象内存布局 Animal对象内存 Fish继承部分 this指针 Fish对象的内存 图 Fish对象内存布局 -*- 本来使用对象指针是为了表达一种动态的性质,即当指针指向不同对象时执行不同的操作,但并没有起到这种作用。 要实现这种功能--------引入虚函数的概念。只需将基类的who()函数声明为虚函数即可。 -*- 3.2 虚函数的定义及使用 1.虚函数的定义:在基类中以virtual加以修饰的非静态成员函数并且在一级或多级派生类中被重新定义的成员函数。 2.为什么需要虚函数:当派生类覆盖基类中同名成员函数时,为避免调用时的二义性可以采用静态或动态联编。 (1)静态联编:采用对象名(借助同名覆盖原则:派生类覆盖基类中同名成员;未强行指明则为派生类同名成员;如访问被同名覆盖的同名基类成员,应使用基类名限定。)或类名限定(根据定义时的类型编译调用代码) (2)动态联编:采用基类对象的指针或引用(因为有些问题在设计时不能预知或为提高程序灵活性,必须使用动态联编),此时根据指针指向的目标对象的类型编译调用代码。 -*- 3.如何实现动态联编:在基类中将同名成员函数定义为虚函数;调用这些同名函数时应采用基类对象的指针或引用。 4.虚函数的特点:
您可能关注的文档
- B737-300飞机襟翼故障.doc
- B737-NG动力装置及APU部分(机械)课件.ppt
- B737飞机着陆标准操作指南.ppt
- BAC贴必定自粘卷材防水.doc
- BAKBONE完全安装手册.doc
- BCG汇源方案之《市场运营》.ppt
- beacon与WIFI和NFC和RFID和GPS的区别(论文资料).doc
- BEC 中级真题解析 第二辑.doc
- BEC初级口语题型解题技巧.doc
- BEC初级模拟试题九.doc
- 实验室危废随意倾倒查处规范.ppt
- 实验室危废废液处理设施规范.ppt
- 实验室危废处置应急管理规范.ppt
- 初中地理中考总复习精品教学课件课堂讲本 基础梳理篇 主题10 中国的地理差异 第20课时 中国的地理差异.ppt
- 初中地理中考总复习精品教学课件课堂讲本 基础梳理篇 主题10 中国的地理差异 第21课时 北方地区.ppt
- 危险废物处置人员防护培训办法.ppt
- 危险废物处置隐患排查技术指南.ppt
- 2026部编版小学数学二年级下册期末综合学业能力测试试卷(3套含答案解析).docx
- 危险废物处置违法案例分析汇编.ppt
- 2026部编版小学数学一年级下册期末综合学业能力测试试卷3套精选(含答案解析).docx
最近下载
- 2025年沪教版(上海)六年级地理第一学期期中考试试卷.pdf VIP
- 2023乡镇卫生院基本公共卫生服务公共卫生项目实施方案.docx VIP
- 储能技术及应用.pptx
- 2024-2025学年海南省海口市华侨中学高一(上)期末数学试卷(含答案).pdf VIP
- 2025 年党支部书记个人述职报告(详细版).docx VIP
- 来访人员登记表.docx VIP
- RS8说明书修订版.pdf
- (高清版)DB62∕T 4339-2021 高速公路工地试验室标准化指南.docx VIP
- 高考历史二轮复习攻破重难点:专题一 从中华文明起源到秦汉统一多民族封建国家的建立与巩固(试题)(中国史).docx VIP
- 电子衍射的课件1.ppt VIP
原创力文档


文档评论(0)