1.0 C++远征:多态的概述与虚函数

1-1多态的概述与虚函数

1.什么是多态?

指相同对象收到不同消息或不同对象收到相同消息时产生不同的动作。

2.多态的分类

(1)静态多态

​ 又叫早绑定

一个类中互为重载的函数的情况。

// 静态多态,又叫早绑定。
// 程序在运行之前——在编译阶段已经能确定调用哪个方法(函数重载,通过参数的不同)。
// Rect.cpp
class Rect {
  public:
    int calcArea(int width);
    int calcArea(int width, int height);
}
(2)动态多态

​ 又叫晚绑定

必须以"封装"和“继承”为基础。

虚函数为了解决动态多态问题而产生的。

// 动态多态,又叫晚绑定。
// 程序在运行时才能确定要调用类的哪个方法。
// Shape.cpp
class Shape {   // 基类
  public:
    virtual double calcArea(){  // 虚函数
      cout << "calcArea" << endl;
      return 0.0;
    }
};

// Circle.cpp
class Circle : public Shape {   // 派生类
  public:
    Circle(double r);
    virtual double calcArea(){  // 虚函数
      return 3.14 * m_dR * m_dR;
    }
  private:
    double m_dR;
};

// Rect.cpp
class Rect : public Shape { // 派生类
  public:
    Rect(double width, double height);
    virtual double clacArea(){  // 虚函数
      return m_dWidth * m_dHeight;
    }
  private:
    double m_dWidth;
    double m_dHeight;
};

// main.cpp
int main(){
  Shape *shape1 = new Circle(4.0);
  Shape *shape2 = new Rect(3.0, 5.0);
  
  // 程序在运行时才能确定要调用类的哪个方法。
  shape1->calcArea();
  shape2->calcArea();
  
  delete shape1;
  shape1 = NULL;
  delete shape2;
  shape2 = NULL;
  
  return 0;
}

转载于:https://www.cnblogs.com/xiaoqingyang/p/6077295.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值