多态性和虚函数学习教案.pptx
上传人:王子****青蛙 上传时间:2024-09-13 格式:PPTX 页数:92 大小:443KB 金币:10 举报 版权申诉
预览加载中,请您耐心等待几秒...

多态性和虚函数学习教案.pptx

多态性和虚函数学习教案.pptx

预览

免费试读已结束,剩余 82 页请下载文档后查看

10 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

主要(zhǔyào)内容什么(shénme)是多态性?静态(jìngtài)多态性和动态多态性1、成员函数重载(zhònɡzǎi)和覆盖2、成员函数(hánshù)重载成员(chéngyuán)函数重载3、覆盖(fùgài)技术覆盖(fùgài)技术覆盖(fùgài)技术覆盖(fùgài)技术4、访问被覆盖(fùgài)的方法访问被覆盖(fùgài)的方法访问被覆盖(fùgài)的方法主要(zhǔyào)内容1、为什么要运行(yùnxíng)时多态?为什么要运行(yùnxíng)时多态?为什么要运行(yùnxíng)时多态?编译器无能为力(wúnéngwéilì)!勉强(miǎnqiǎng)的方法2、解决之道:虚函数(hánshù)神奇(shénqí)的变化一个接口(jiēkǒu),多种方法3、虚函数(hánshù)的说明说明(shuōmíng)另一个(yīɡè)示例基类的基本功能派生类:CRect派生类:CCircle派生类:CTriangle链表的遍历(biànlì)解决之道:虚函数(hánshù)4、寻根求源:静态(jìngtài)多态性5、寻根求源:虚函数(hánshù)虚函数(hánshù)原理虚函数(hánshù)原理虚函数(hánshù)原理虚函数(hánshù)原理:基类对象虚函数原理(yuánlǐ):派生类对象虚函数(hánshù)原理:派生类对象6、虚析构函数(hánshù)派生类虚析构函数(hánshù):原因虚析构函数(hánshù):原因主要(zhǔyào)内容1、定义(dìngyì)纯虚函数2、派生类派生类派生类3、抽象类抽象类主要(zhǔyào)内容classComplex{doublereal,imag;public:Complex(){real=0;imag=0;}Complex(doubler,doublei);Complex(constComplex&c);voidprint();voidcopy(constComplex&c);};Complex::Complex(doubler,doublei){real=r;imag=i;}Complex::Complex(constComplex&c){real=c.real;imag=c.imag;}voidComplex::copy(constComplex&c){real=c.real;imag=c.imag;}voidComplex::print(){if(imag<0)cout<<real<<imag<<‘i’<<endl;elseout<<real<<‘+’<<imag<<‘i’<<endl;}voidmain(){Complexa(3,4),b(4,5);a.print();a.copy(b);a.print();}classComplex{doublereal,imag;public:Complex(){real=0;imag=0;}Complex(doubler,doublei);Complex(constComplex&c);voidprint();voidcopy(constComplex&c);ComplexAdd(constComplex&c);};ComplexComplex::Add(constComplex&c){doublex,y;x=real+c.real;y=imag+c.imag;Complextmp(x,y);returntemp;}voidmain(){Complexa(3,4),b(4,5),c(0,0);a.print();a.copy(b);a.print();c=a.Add(b);c.print();}从简单数据类型开始思考运算符的实质?表达式9/2=4,而9.0/2.0=4.5。这里的同一个运算符“/”,由于所操作的数据不同而具有不同的意义,为什么?如何实现(shíxiàn)的?C++是由函数组成的,在C++内部,任何运算都是通过函数来实现(shíxiàn)的。在处理表达式8+7时,C++将这个表达式解释成如下的函数调用表达式:operator+(8,7);相同的运算符对不同数据有不同的操作,实质上是函数的重载!C++已经为各种基本数据类型定义了可能(kěnéng)的运算符函数,如operator+(int,int)operator-(int,int)operator/(int,int);operator/(double,double);如果想让类的对象也能使用这些运算符,就需要重载对应的运算符。可以使用友