ch9_3_类与对象.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ch9_3_类与对象

类与对象 继承与派生的概念 派生类的结构 虚拟与多态 多文件程序结构 现实世界是分类分层的客观实在 一、继承和派生的概念 层次概念是计算机的重要概念。通过继承(inheritance)的机制可对类(class)分层,提供类型/子类型的关系。 被继承的类称为基类(base class)或超类(superclass),新的类为派生类(derived class)或子类(subclass)。 继承帮助人们精确地描述事物,理解事物的本质 什么是手机? 派生类的定义 其中基类名表中是已声明的类。 在派生类定义的类体中给出的成员称为派生类成员,它们是新增加的成员,它们给派生类添加了不同于基类的新的属性和功能。派生类成员也包括取代基类成员的更新成员。 基类名表 访问限定符:基类名前的访问限定符,是对基类成员进一步的限制。 访问控制也是三种: 公有(public)方式,亦称公有继承 保护(protected)方式,亦称保护继承 私有(private)方式, 亦称私有继承。 例:由Person类派生Student类 派生编程步骤 公有继承和私有继承 保护继承 基类的私有成员在派生类中不可直接访问。 基类中的公有和保护成员全部成为派生类的保护成员,在派生类中可以直接访问。 在派生类对象之外不能直接访问该对象的任何基类成员。 二、派生类的结构 三、虚拟和多态 补充:函数重载 具有相同名称、不同参数表的一组函数称为重载函数; 当两个函数的参数表不同时,允许其重名,系统会根据函数名和参数表唯一确定应该调用的函数。 当两个参数表中的任一个参数的类型对应不同,或两个参数表中参数的个数不同(带有默认值的参数除外)时,则认为这两个参数表不同。 1) func(int a, int b, char c=‘\n‘); 2) func (int a, int b); 3) func (int a, int b, int c); 4) func (int a, int b, char c); func (x, y); //假设有int x, y func (x, y, ‘z’); 操作符重载(运算符重载) 对于基本数据类型,运算符的功能已经由系统预定义。 对于用户自定义的“类”类型,运算符的功能未定义,需要用户自己定义。 用一个运算符,不同类型的对象使用时,功能不同(调用不同的函数),是运算符的重载。 单目运算符重载格式: 对Person类重载“+”操作符 Person zhang(“zhang”,18); zhang+4; //对象zhang的年龄增加4岁 zhang.print(); 操作符的重载形式 重载为成员函数 第一个参数其实是本对象自身,但不写在参数表中 重载为友元函数 参数表中为所有参数 对Clock类重载“-”操作符 主函数 成员运算符函数与友元运算符函数 对于双目运算符而言,成员运算符函数带有一个参数,而友元运算符函数带有两个参数; 对于前置单目运算符而言,成员运算符函数不带参数,而友元运算符函数带一个参数。 对于后置单目运算符而言,成员运算符函数带一个参数,而友元运算符函数带两个参数。 运算符重载的一般习惯 C++的大部分运算符既可说明为成员运算符函数,又可说明为友元运算符函数。究竟选择哪一种运算符函数好一些,没有定论,这主要取决于实际情况和程序员的习惯。 一般而言,对于双目运算符,将它重载为一个友元运算符函数比重载为一个成员运算符函数便于使用。 若一个运算符的操作需要修改类对象的状态,则选择成员运算符函数较好。 四、多文件程序结构 程序设计时习惯将类的定义部分放到一个头文件中 ( 类的外部接口 ) ,类的成员函数定义部分放到一个源文件中 ( 类的内部实现 ) ,包含相应的头文件即可在程序中直接使用文件中所定义的类。 对于用户自定义的函数,习惯将函数声明放在一个头文件中( 函数的外部接口 ) ,函数的定义放在一个源文件中( 函数的内部实现 ) ,使用时只要包含相应的头文件即可。 一个C++工程 包含主函数的程序文件 用户自定义类库头文件 用户自定义类库的内部实现程序 用户自定义函数声明头文件 用户自定义函数库的实现程序 变量的作用域和生存期 全局作用域 文件作用域 局部作用域 * * Person born(……); grow(……); say(……); walk(……); name sex age height Cat born(……); grow(……); meow(……); walk(……); sex age length Animal born(……); grow(……); sex age 物质 无机物 有机物 生命体 非生命体 动物 植物 微生物 人 …… …… 派生反映了事物之间的联系,事物

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档