【笔记】C++程序设计第四版谭浩强第12章C++的多态性

个人的读书笔记,记录一下~
C++程序设计第四版·谭浩强·第12章C++的多态性

C++的多态性
1多态性是什么

向不同的对象发送同一个消息,不同的对象在接受时会产生不同的行为(即方法)。

2利用虚函数实现动态多态性
  1. 定义:基类声明的函数是虚拟的,不是实际存在的函数,在派生类中才正式定义此函数。

  2. 作用:允许在派生类中重新定义与基类同名的函数,可以通过基类指针或引用来访问基类和派生类中的同名函数。

  3. 对于基类(Point)与派生类(Circle)中的同名函数(display):

    • Circle c;c.display();调用的是Circle中的display
    • Point *p=&c;p->display;调用的是Point中的display
  4. 使用:在基类Point中声明display函数时:把基类函数声明为虚函数(只用在声明里面生命清楚就好)

    virtual void display();

    像上面3中第二点,Point *p=&c;p->display;调用的是Circle派生类中的display

  5. 使用虚函数会有一定的空间开销

虚析构函数
  1. Point* p = new Circle;delete p;

    这种情况只会调用基类Point的析构函数。当把基类析构函数声明为虚函数时,基类和派生类的析构函数都会被调用。

  2. 构造函数不能声明为虚函数。

  3. 静态关联:在编译时即可确定其调用的虚函数属于哪一个类,例如函数重载和通过对象名调用的虚函数。由于是在运行前进行关联的,又称为早期关联

    动态关联:编译系统把他放在运行阶段进行处理,在运行阶段确定关联关系。也叫滞后关联。

3纯虚函数
  1. 意义:基类的函数在基类中没有意义(只是为了派生,在派生类中定义),可以把该函数声明为纯虚函数。
  2. 基类中声明:virtual float area() const=0;没有函数体。
  3. 如果派生类中没有对纯虚函数的定义,则在派生函数中该函数仍然是一个纯虚函数。
  4. 纯虚函数无法被调用,包含纯虚函数的类无法创造对象,包含纯虚函数的类是抽象类。
4抽象类
  1. 意义:不用来定义对象而值作为一种基本类型用作继承的类叫做抽象类。定义这些类的唯一目的时用它作为基类去建立派生类。
  2. 可以定义指向抽象类数据的指针变量。这样的话可以用这种指针指向派生类对象,然后通过该指针调用虚函数,实现多态性的操作。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值