



下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C+ Primer第 15 章学习笔记第 15 章:面向对象编程面向对象编程基于三个基本概念:数据抽象,继承,动态绑定。用类进行数据抽象用类派生从一个类继承另一个类:派生类继承基类成员;动态绑定使编译器能够在运行时决定是使用基类中定义的函数还是派生类中定义的函数。学习摘录162:继承与动态绑定的作用:能够容易地定义与其他类相似但又不相同的新类, 能够更容易地编写忽略这些相似类型之间区别的程序。学习摘录 163:多态性面向对象编程的关键思想是多态性(polymorphism )继承而相关联的类型为多态类型。学习摘录 164:继承派生类( derived class)能够继承基类(base cla
2、ss)定义的成员派生类可以无须改变而使用那些与派生类型具体特性不相关的操作派生类可以重定义那些与派生类型相关的成员函数, 将函数特化, 考虑派生类型的特性。在 C+中,基类必须指出希望派生类重定义哪些函数, 定义为 virtual 的函数是基类期待派生类重新定义的,基类希望派生类继承的函数不能定义为虚函数。学习摘录 165:动态绑定( dynamic binding )我们能够编写程序使用继承层次中任意类型的对象,无须关心对象的具体类型。学习摘录 166:protected 成员可以认为protected 访问标号是private 和 public 的混合: 1. 像 private 成员一样
3、, protected 成员不能被类的用户访问。 2. 像 public 成员一样, protected 成员可被该类的派生类访问。派生类只能通过派生类对象访问其基类的 protected 成员,派生类对其基类类型对象的protected 成员没有特殊访问权限。学习摘录 167:派生类类型接口简单地说:提供给派生类型接口是protected成员和public 成员的集合。学习摘录 168:派生类为了定义派生类,使用类派生列表(class derivation list )指定基类。 class classname: access-label base-class这里的access-label
4、是 public 、 protected 或 private, base -class 是已定义的类的名字。学习摘录 169:派生类和虚函数一旦函数在基类中声明为虚函数, 它就一直为虚函数, 派生类无法改变该函数为虚函数这一事实。派生类重定义虚函数时,可以使用virtual 保留字,但不是必须这样做。学习摘录 170:virtual 与其他成员函数 C+函数默认不使用动态绑定。要触发动态绑定,必须满足两个条件:第一,要将成员函数指定为虚函数。 (默认的成员函数都是非虚函数)第二,要通过基类类型的引用或指针进行函数调用。学习摘录 171:静态类型与动态类型的概念静态类型(static type
5、)在编译时可知的引用类型或指针类型。动态类型(dynamic type )指针或引用所绑定的对象的类型,这是仅在运行时可知的。学习摘录 172:C+中的多态性引用和指针的静态类型与动态类型可以不同,这是C+用以支持多态性的基石。学习摘录 173:派生类函数调用基类版本只有成员函数中的代码才应该使用作用域操作符覆盖虚函数机制。覆盖虚函数机制,最常见的理由是为了派生类虚函数调用基类中的版本。派生类虚函数调用基类版本时, 必须显式使用作用域操作符。 如果派生类函数忽略了这样做,则函数调用会在运行时确定并且将是一个自身调用,从而导致无穷递归。学习摘录174:继承与组合定义一作为另一个类的公用派生类时,
6、派生类应反映与基类的“是一种(在书店的例子中,基类表示按规定价格销售的书的概念,Bulk_itemIs A)”关系。是一种书,但具有不同的定价策略。类型之间另一种常见的关系是称为“有一个(Has A)”的关系。书店的例子的类具有价格和ISBN.学习摘录 175:友元关系与继承基类或派生类可以使其他类或函数成为友元。友元可以访问类的private 和 protected 数据。友元关系不能继承。学习摘录 176:转换与继承每个派生类对象包含一个基类部分。可以将派生类对象的引用转换为基类子对象的引用,对指针也类似。没有从基类引用(或基类指针)到派生类引用(或派生类指针)的(自动)转换。没有从派生类
7、型对象到基类类型对象的直接转换。第四节:构造函数和复制控制构造函数和复制控制成员不能继承,每个类定义自己的构造函数和复制控制成员。学习摘录 177:合成的派生类默认构造函数派生类的合成默认构造函数与非派生的构造函数只有一点不同:除了初始化派生类的数据成员外,还要初始化派生类对象的基类部分。基类部分由基类的默认构函数初始化。学习摘录 178:派生类的构造次序构造函数初始化列表为类的基类和成员提供初始值,它并不指定初始化的执行次序。首先初始化基类,然后根据声明次序初始化派生类的成员。学习摘录 179:只能初始化直接基类一个类只能初始化自己的直接基类。(直接基类就是在派生列表中指定的类。)如果类从类
8、派生,类从类派生,那是的直接基类。学习摘录180:重构( refactioring )重构包括重新定义类层次,将操作和/ 或数据从一个类移到另一个类。为了适应应用程序的需要而重新设计类以便增加新函数或处理其他改变时, 最有可能需要进行重构。然而, 对类进行重构, 或以任意其他方式改变类, 使用这些类的任意代码都必须重新编译。学习摘录 181:尊重基类接口构造函数只能初始化其直接基类的原因是每个类都定义了自己的接口。一旦定义了自己的接口,与该类对象的所有交互都应该通过接口。学习摘录 182:定义派生类复制构造函数如果派生类显式定义自己的复制构造函数或赋值操作符, 则该定义将完全覆盖默认定义。被继
9、承类的复制构造函数和赋值操作符负责对基类成分以及类自己的成员进行复制或赋值。学习摘录 183:派生类析构函数析构函数的工作与复制构函数和赋值操作符不同: 派生类析构函数不负责撤销基类对象的成员。每个析构函数只负责清除自已的成员, 对象的撤销顺序与构造顺序相反: 首先运行派生类析构函数,然后按继承层次依次向上调用各基类析造函数。如果析构函数为虚函,那么通过指针调用时,运行哪个析构函数将因指针所指对象类型的不同而不同。即使析构函数没有工作要做,继承层次的根类也应该定义一个虚件构函数。学习摘录 184:构造函数和赋值操作符不是虚函数在复制控制成员中,只有析构函数应定义为虚函数,构造函数不能定义为虚函
10、数。将类的赋值操作符设为虚函数很有可能会令人混淆,而且不会有什么好处。第五节:继承情况下的类作用域在继承情况下, 派生类的作用域嵌套在基类作用域中。 如果不能在派生类作用域中确定名字,就在外围基类作用域查找该名字的定义。学习摘录 185:名字冲突与继承与基类成员同名的派生类成员将屏蔽对基类成员的直接访问。可以使用作用域操作符访问被屏蔽的基类成员。学习摘录186:纯虚函数含有(或继承)一个或多个纯虚函数的类是抽象基类(abstract base class)。除了作为抽象基类的派生类的对象的组成部分,不能创建抽象类型的对象。学习摘录 187:容器与继承因为派生类对象在赋值给基类对象时会被“切掉” ,所以容器与通过继承相关的类型不能很好地融合。第八节:句柄类与继承 C+中面向对象编程中一个颇具讽刺意味的地方是,不能使用对象支持面对对象编程,相反,必须使用指针或引用。学习摘录 188:定义包装类和句柄类 C+中一个通用的技术是定义包装( cover)类或句柄( handle)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025至2030年中国呼市酱肉香料数据监测研究报告
- 2024年云南公务员《行政职业能力测验》试题真题及答案
- 医美注射类知识培训课件
- 智慧物流园区智能管理系统研发实践
- 股份转让委托协议书
- 安全监控事件统计表格
- 陕西省西安市蓝田县2024-2025学年七年级上学期期末生物学试题(含答案)
- 湖南省益阳市安化县2024-2025学年七年级上学期期末生物学试题(含答案)
- 智能能源管理系统开发合同
- 《古希腊神话与传说:大一历史与文化课程教案》
- 大模型在刑侦技术中的应用探索
- 2024年苏州工业职业技术学院单招职业适应性测试题库完美版
- 城乡的规划法解读
- 2024年全国乡村医生资格考试专业基础知识复习题库及答案(共150题)
- 苏教版六年级下册数学第三单元第1课《解决问题的策略(1)》课件(公开课)
- EOS-60D-说明手册课件
- 企业经营管理诊断方案
- 压疮上报登记表
- 2021年无人机驾驶员考试题库及答案(完整版)
- 城轨车辆常见制动系统-EP09制动系统
- 同位素水文学研究综述
评论
0/150
提交评论