网站大量收购闲置独家精品文档,联系QQ:2885784924

C语言大学教程 C++的语言第21章.ppt

  1. 1、本文档共67页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言大学教程C的语言第21章

⑤ 区别静态关联和动态关联。 ⑥ 如果在基类声明了虚函数,则在派生类中凡是与该函数有相同的函数名、函数类型、参数个数和类型的函数,均为虚函数(不论在派生类中是否用virtual声明)。 ⑦ 使用虚函数提高了程序的可扩充性。 关键字dynamic_cast(动态强制转换):操作符dynamic_cast将一个指向基类的指针转换为一个指向派生类的指针(如果不能正确转换,则返回0——空指针)。在类层次间进行上行转换时. class Shape { ??? public: virtual ~Shape(); ??? virtual void draw() const = 0; }; class Rollable { ??? public: virtual ~Rollable(); ??? virtual void roll() = 0; }; class Circle : public Shape, public Rollable { ??? void draw() const; ??? void roll(); }; class Square : public Shape { ??? void draw() const; }; ? //横向转型失败 Shape *pShape1 = new Square(); Rollable *pRollable1 = dynamic_castRollable*(pShape1); //pRollable为NULL //横向转型成功 Shape *pShape2 = new Circle(); Rollable *pRollable2 = dynamic_castRollable*(pShape2); //pRollable不为NULL 实例练习 设计shape类层次结构。每个TwoDShape类都包含成员函数getArea,用于计算二维形状的面积。每个ThreeDShape类都包含成员函数getArea和getVolume,分别用于计算三维形状的表面积和体积。编写一个程序,使用一个Shape指针的vector对象,他的元素指向类层次总每个具体类的对象。 1.程序打印输出该vector对象的所有形状循环中,程序应判断每个形状是二维形状还是三维形状,如果是二维形状,显示面积,如果是三维形状,显示表面积和体积。 * * * * * * In class base In class base In class B In class base In class base Delete []Bptr Delete [] Aptr Delete []baseptr Delete []Bptr Delete [] Aptr Delete []baseptr * * * //主函数 int main() { Student stud1(1001,″Li″,87.5); Graduate grad1(2001,″Wang″,98.5,563.5); Student *pt=stud1; //定义指向基类对象的指针变量pt pt-display( ); pt=grad1; pt-display( ); return 0; } num:1001 (stud1的数据) name:Li score:87.5 num:2001 (grad1中基类部分的数据) name:wang score:98.5 pay=1200 (这一项以前是没有的) 由虚函数实现的动态多态性就是: 同一类族中不同类的对象,对同一函数调用作出不同的响应。虚函数的使用方法是: ① 在基类用virtual声明成员函数为虚函数。这样就可以在派生类中重新定义此函数,为它赋予新的功能,并能方便地被调用。在类外定义虚函数时,不必加virtual。 ② 在派生类中重新定义此函数,要求函数名、函数类型、函数参数个数和类型全部与基类的虚函数相同,并根据派生类的需要重新定义函数体。 C++规定,当一个成员函数被声明为虚函数后,其派生类中的同名函数都自动成为虚函数。因此在派生类重新声明该虚函数时,可以加virtual,也可以不加,一般在每一层声明该函数时都加virtual,使程序更加清晰。 如果在派生类中没有对基类的虚函数重新定义,则派生类简单地继承其直接基类的虚函数。 ③ 定义一个

文档评论(0)

liwenhua00 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档