第23讲(抽象类和虚析构函数)

第23讲(抽象类和虚析构函数)

ID:15885075

大小:52.00 KB

页数:7页

时间:2018-08-06

第23讲(抽象类和虚析构函数)_第1页
第23讲(抽象类和虚析构函数)_第2页
第23讲(抽象类和虚析构函数)_第3页
第23讲(抽象类和虚析构函数)_第4页
第23讲(抽象类和虚析构函数)_第5页
资源描述:

《第23讲(抽象类和虚析构函数)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第23讲教学内容8.4抽象类8.4.1纯虚函数8.4.2抽象类教学重点和难点1纯虚函数的定义方式,作用2虚析构函数的理解和使用3抽象类的使用场合教学方法:通过程序举例演示,讲解纯虚函数的定义方式,作用,虚析构函数和抽象类的使用场合教学学时2学时教学过程一虚析构函数:1用多态性处理类层次中动态分配的对象时存在一个问题:如果delete运算符用于指向派生类对象的基类指针,但程序中又显式的用该运算符删除每一个对象,那么c++标准会指出这一行为没有定义。这个问题有个简单的解决办法:声明基类析构函数为虚函数,这样,即使所有派生类析构函数不与基类析构函数同名,也可以使这些析构函数为虚函

2、数。现在,如果对基类指针用delete运算符隐式删除了类层次中的某个对象,那么可以基于基类指针所指的对象调用相应的类的析构函数。记住:删除某个派生类后,派生类的基类部分也会被删除,基类析构函数在派生类析构函数之后自动执行。2何时需要虚析构函数?当你可能通过基类指针删除派生类对象时(通过delete),也就是使用基类的指针能够针对不同的对象进行清理工作程序举例:观察下列程序的输出结果#includeusingnamespacestd;classPeople{protected:charm_name[20];public:People(charname[20

3、]){strcpy(m_name,name);cout<<"调用People的构造函数"<

4、oplep("小李");Students("小王",20070201);//此时会调用父类和自己本身的构造函数和析构函数,不受virtual的影响*/People*pp;pp=newStudent("小王",20070201);deletepp;//当你可能通过基类指针删除派生类对象时(通过delete),可以使用基类的指针能够针对不同的对象进行清理工作,此时就应该把基类的析构函数设为虚析构函数//可比较基类的析构函数中有无virtual的区别二抽象类:1作用–抽象类为抽象和设计的目的而声明,将有关的数据和行为组织在个继承层次结构中,保证派生类具有要求的行为。–对于暂时无法

5、实现的函数,可以声明为纯虚函数,留给派生类去实现。2注意–抽象类只能作为基类来使用。–不能声明抽象类的对象。–构造函数不能是虚函数,析构函数可以是虚函数。3概念:带有纯虚函数的类称为抽象类:,抽象类包含一个或者多个class类名{virtual类型函数名(参数表)=0;//纯虚函数…}程序举例:课后习题8-9请编写抽象类Shape,在此基础上派生出Circle和Rectangle类,两者都有计算对象面积的函数GetArea()和计算周长的函数GetPerim(),从Rectanglelel类派生出Square类#includeusingnamespace

6、std;#includeusingnamespacestd;classShape//带有纯虚函数的类叫抽象类{public:virtualdoubleGetArea()=0;//纯虚函数,也就是没有函数体{}virtualdoubleGetPerim()=0;virtualchar*GetName()=0;};classCircle:publicShape{private:intradius;public:Circle(){}Circle(intr):radius(r){}virtualdoubleGetArea(){return3.14*radius*

7、radius;}virtualdoubleGetPerim(){return2*3.14*radius;}virtualchar*GetName(){return"圆:";}};classRectangle:publicShape{private:intwidth;intlenth;public:Rectangle(){}Rectangle(intw,inth):width(w),lenth(h){}virtualdoubleGetArea(){returnwidth*lenth;}virtualdoubleGet

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。