欢迎来到天天文库
浏览记录
ID:40919892
大小:49.50 KB
页数:10页
时间:2019-08-10
《多态(二)和异常处理示例》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、//---------------------------------------------------------------/****************************************************************本例演示通过基类指针自动调用子类的析构函数/****************************************************************///--------------------------------------------------
2、-------------#includeusingnamespacestd;//---------------------------------------------------------------classTBase{public:virtual~TBase(){}virtualvoidInput(){}virtualvoidShow(){}};//---------------------------------------------------------------classTScore:pu
3、blicTBase//公有派生{private:int*pScores;intHeapSize;intCount;public:TScore(){pScores=newint[3];Count=0;HeapSize=3;}~TScore(){cout<<"TScore析构,Count="<4、---------------------------------------------------------voidTScore::Input(){intScore;cout<<"输入成绩:"<>Score;if(Count>=HeapSize){HeapSize+=3;int*p=newint[HeapSize];memcpy(p,pScores,(HeapSize-3)*sizeof(int));deletepScores;pScores=p;}pScores[Count++]=Score;}//---5、------------------------------------------------------------voidfun(TBase*ptr)//普通函数{for(inti=0;i<5;i++)ptr->Input();ptr->Show();deleteptr;}//---------------------------------------------------------------voidmain()//主函数{TBase*p;//抽象基类指针,抽象类可以申明指针和引用TScore*Score=newTSc6、ore;//声明派生类对象p=Score;/*考虑到fun中的delete,此处不能这样做(为什么?)TScoreScore;p=&Score;另:也不能使用默认拷贝构造函数,如:TScore*Score1=newTScore;*Score1=*Score;//浅拷贝,析构时将出错请大家自行尝试上述做法,实际运行效果*/fun(p);}//---------------------------------------------------------------//---------------------------------7、------------------------------/****************************************************************1、含有纯虚函数的类是抽象类,也叫纯虚类,可以有成员变量和普通成员函数2、一个类只包含纯虚函数成员,则叫纯抽象类,也叫接口类/****************************************************************///--------------------------------------------8、-------------------#includeusingnamespacestd;//------------------------------------------------------------
4、---------------------------------------------------------voidTScore::Input(){intScore;cout<<"输入成绩:"<>Score;if(Count>=HeapSize){HeapSize+=3;int*p=newint[HeapSize];memcpy(p,pScores,(HeapSize-3)*sizeof(int));deletepScores;pScores=p;}pScores[Count++]=Score;}//---
5、------------------------------------------------------------voidfun(TBase*ptr)//普通函数{for(inti=0;i<5;i++)ptr->Input();ptr->Show();deleteptr;}//---------------------------------------------------------------voidmain()//主函数{TBase*p;//抽象基类指针,抽象类可以申明指针和引用TScore*Score=newTSc
6、ore;//声明派生类对象p=Score;/*考虑到fun中的delete,此处不能这样做(为什么?)TScoreScore;p=&Score;另:也不能使用默认拷贝构造函数,如:TScore*Score1=newTScore;*Score1=*Score;//浅拷贝,析构时将出错请大家自行尝试上述做法,实际运行效果*/fun(p);}//---------------------------------------------------------------//---------------------------------
7、------------------------------/****************************************************************1、含有纯虚函数的类是抽象类,也叫纯虚类,可以有成员变量和普通成员函数2、一个类只包含纯虚函数成员,则叫纯抽象类,也叫接口类/****************************************************************///--------------------------------------------
8、-------------------#includeusingnamespacestd;//------------------------------------------------------------
此文档下载收益归作者所有