C教程 从入门到精通 chap07实用_第1页
C教程 从入门到精通 chap07实用_第2页
C教程 从入门到精通 chap07实用_第3页
C教程 从入门到精通 chap07实用_第4页
C教程 从入门到精通 chap07实用_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

会计学1C教程从入门到精通chap07实用基类和派生类继承就是从一个类中继承它的特性到另一个类中。被继承的类叫做基类,继承基类的类称为派生类。派生类可以继承基类的特性并添加自己的独特特性。第2页/共36页第1页/共36页定义派生类classderivedclass:publicbassclass{}在后面的花括号中写出derivedclass中所有非继承的特性。public关键字所处的位置用于写访问修饰符,允许省略不写。访问形饰符只能是public,private或者protected之一默认为private。第3页/共36页第2页/共36页类的继承第4页/共36页第3页/共36页类继承自两个以上的基类第5页/共36页第4页/共36页继承的访问控制基类各个成员的访问修饰符(private,public和protected)以及派生类以什么方式继承基类(也是private,public和protected)决定了基类的成员是否允许派生类的访问。如果派生类以public的方式继承基类,那么,基类的所有公有数据成员都会成为派生类的公有数据成员,而基类的私有数据成员仍然保持它的私有特性,也就是说只能被基类定义的成员函数所访问,而不能被派生类的任何成员函数所访问。同样,基类的所有私有成员函数派生类也不能够访问。如果以private的方式继承一个类,那么基类的所有数据成员都会变成派生类的私有成员,不论这个成员在基类中是私有的还是公有的。这时派生类的成员仍然可以访问它们,但是程序其他部分的代码不能够访问它们。第6页/共36页第5页/共36页用公有方式继承基类的私有数据成员的方法计算一个矩形的面积第7页/共36页第6页/共36页用私有方式继承基类的私有数据成员的方法计算一个矩形的面积第8页/共36页第7页/共36页关于protected被声明为protected的成员在类的内部是公有的,但是在类的外部则是私有的。派生类中可以直接访问基类的受保护的成员,但是在类的外部则不可以直接访问它们,因为在类的外部认为它们是私有的成员。如果派生类以public的方式继承基类,那么基类的protected成员在派生类中仍然是protected类型如果派生类以private的方式继承基类,那么基类的protected成员在派生类中就变成private类型。第9页/共36页第8页/共36页使用protected成员第10页/共36页第9页/共36页派生类的构造函数和析构函数由于在派生类中允许存在基类中没有的成员数据,因此,在C++中,使用基类的构造函数为基类的数据成员初始化,而使用派生类的构造函数为派生类中新定义的数据成员初始化。如果基类没有显式定义一个构造函数用于对成员数据进行初始化的话,那么就用派生类的构造函数对它们进行初始化。第11页/共36页第10页/共36页计算一个立方体的体积第12页/共36页第11页/共36页调用基类的构造函数第13页/共36页第12页/共36页派生类和基类构造函数与析构函数的执行次序第14页/共36页第13页/共36页多重派生在类的继承过程中,使用一个以上的基类派生出一个派生类。方法是在定义好基类之后,在定义派生类时把基类用逗号隔开第15页/共36页第14页/共36页多重派生第16页/共36页第15页/共36页重载函数重载运算符重载第17页/共36页第16页/共36页函数重载函数重载是指同一个函数名可以对应多个函数的实现,每一种实现对应着一个函数,这些函数具有相同的名字,但是参数的类型不一样,或者参数的个数不相同。这就是函数重载。在调用一个函数时如何确定使用哪个函数实现呢?编译器会根据函数调用时参数的个数和参数的数据类型来确定使用哪个函数来实现。因此在编写重载函数的时候要求各个函数的参数个数不同,或者参数的数据类型不同,这样才能相互区分开来,否则将不能实现重载。第18页/共36页第17页/共36页参数类型不同的函数重载第19页/共36页第18页/共36页参数个数不同的函数重载第20页/共36页第19页/共36页运算符重载C++允许通过类来重载运算符让运算符实现新的功能。普通的运算符只能够对普通数据类型的数据进行运算,而使用运算符重载则可以实现类之间的运算,从而将新的数据类型无缝地集成到程序设计环境中来。第21页/共36页第20页/共36页使用成员运算符函数实现重载使用运算符重载,可以为一个普通的运算符赋予一个新的含义为了能够重载运算符,就需要在类中定义一个operator函数,称为成员运算符函数,方法是:类名::operator运算符(参数表)第22页/共36页第21页/共36页使用运算符重载实现二维空间坐标的加和与赋值第23页/共36页第22页/共36页操作数的顺序在重载运算符时,必须注意操作数的顺序。a+b和b+a的值是一样的,但是如果重载“–”运算符,那么a–b和b–a的结果就应该不同。第24页/共36页第23页/共36页在dtwo类中重载++运算符第25页/共36页第24页/共36页使用友元函数实现重载由于友元函数并不是类真正的成员函数,所以不可以使用this指针来传递参数,因此要使用友元函数实现一元运算符的重载就需要让友元成员运算符函数带一个参数,而如果重载二元运算符就需要让它的友元成员运算符函数带两个参数第26页/共36页第25页/共36页使用友元函数重载运算符*第27页/共36页第26页/共36页多态性指向基类的指针和指向派生类的指针 虚函数 纯虚函数和抽象类第28页/共36页第27页/共36页多态性C++实现多态性的基础是继承和指向基类的指针,而实际上多态性是通过虚函数实现的。第29页/共36页第28页/共36页指向基类的指针和指向派生类的指针如果定义一个指针p指向一个类a,这个类又派生出新的类b,那么p就是指向基类的指针,并且这个指针还可以指向类b的对象。当指向基类的指针指向派生类对象的时候,通过这个指针只能访问到派生类对象中从基类继承来的那些成员,不能访问派生类中新增加的成员。第30页/共36页第29页/共36页使用指向基类的指针访问派生类对象第31页/共36页第30页/共36页虚函数虚函数是指在一个类中被声明为virtual的成员函数,这个函数允许在这个基类的一个或多个派生类中重新定义。在所有的这些类中,虚函数都有相同的名字,并且有完全相同的参数数量和类型,但是具有不同的实现方式。如果定义了一个指向基类的指针p,就可以使用p调用不同派生类的虚函数,由于所有虚函数的名字相同,参数的个数和类型也都一样,因此实现了面向对象程序设计所提倡的“一个接口多种方法”的多态性。第32页/共36页第31页/共36页实现虚函数第33页/共36页第32页/共36页使用虚函数实现多态性第34页/共36页第33页/共36页纯虚函数和抽象类纯虚函数只有函数的声明,却没有

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论