资源描述:
《C++面向对象程序设计 教学课件 作者 陈维兴 等 第5章 派生类与继承.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第5章派生类与继承5.1继承与派生类5.1.1为什么要使用继承classperson{protected:charname[10];intage;charsex;public:voidprint();};classemployee{protected:charname[10];intage;charsex;chardepartment[20];floatsalary;public:print();};5.1.2派生类的声明//定义一个基类classperson{protected:charname[10];intage;charse
2、x;public://……};//定义一个派生类classemployee:publicperson{protected:chardepartment[20];floatsalary;public://……};声明一个派生类的一般格式为:class派生类名:继承方式基类名{//派生类新增的数据成员和成员函数};由类person继承出类employee可以采用下面的三种格式之一:(1)公有继承classemployee:publicperson{//…};(2)私有继承classemployee:privateperson{//…};
3、(3)保护继承classemployee:protectedperson{//…};从已有类派生出新类时,可以在派生类内完成以下几种功能:(1)可以增加新的数据成员;(2)可以增加新的成员函数;(3)可以重新定义基类中已有的成员函数;(4)可以改变现有成员的属性。5-1-3基类成员在派生类中的访问属性在基类中的访问属性继承方式在派生类中的访问属性privatepublic不可直接访问privateprivate不可直接访问privateprotected不可直接访问publicpublicpublicpublicprivatepri
4、vatepublicprotectedprotectedprotectedpublicprotectedprotectedprivateprivateprotectedprotectedprotected5.1.4派生类对基类成员的访问规则派生类对基类成员的访问形式主要有以下两种:(1)内部访问:由派生类中新增成员对基类继承来的成员的访问。(2)对象访问:在派生类外部,通过派生类的对象对从基类继承来的成员的访问。1.私有继承的访问规则当类的继承方式为私有继承时,基类的public成员和protected成员被继承后作为派生类的pri
5、vate成员,派生类的其他成员可以直接访问它们,但是在类外部通过派生类的对象无法访问。基类的private成员在私有派生类中是不可直接访问的,所以无论是派生类成员还是通过派生类的对象,都无法直接访问从基类继承来的private成员,但是可以通过基类提供的public成员函数间接访问。例5.1一个私有继承的例子表5-2私有继承的访问规则基类成员private成员public成员protected成员内部访问对象访问不可访问不可访问可访问不可访问可访问不可访问2.公有继承的访问规则当类的继承方式为公有继承时,基类的public成员和pr
6、otected成员被继承到派生类中仍作为派生类的public成员和protected成员,派生类的其他成员可以直接访问它们。但是,类的外部使用者只能通过派生类的对象访问继承来的public成员。基类的private成员在私有派生类中是不可直接访问的,所以无论是派生类成员还是通过派生类的对象,都无法直接访问从基类继承来的private成员,但是可以通过基类提供的public成员函数间接访问它们。例5.3公有继承的访问规则表5-3公有继承的访问规则基类成员Private成员public成员protected成员内部访问对象访问不可访问不
7、可访问可访问可访问可访问不可访问3.保护继承的访问规则当类的继承方式为保护继承时,基类的public成员和protected成员被继承到派生类中都作为派生类的protected成员,派生类的其他成员可以直接访问它们,但是类的外部使用者不能通过派生类的对象来访问它们。基类的private成员在私有派生类中是不可直接访问的,所以无论是派生类成员还是通过派生类的对象,都无法直接访问基类的private成员。例5.4保护继承的访问规则。表5-4保护继承的访问规则基类成员private成员public成员protected成员内部访问对象访问
8、不可访问不可访问可访问不可访问可访问不可访问5.2派生类的构造函数和析构函数5.2.1派生类构造函数和析构函数的执行顺序通常情况下,当创建派生类对象时,首先执行基类的构造函数,随后再执行派生类的构造函数;当撤消派生类对象时,则先执行派