C++ 多态

发布于 2024-04-17 12:53:12 字数 1771 浏览 34 评论 0

  • 多态,即多种状态,在面向对象语言中,接口的多种不同的实现方式即为多态。多态性在 C++中是通过虚函数来实现的。
  • 多态是以封装和继承为基础的。

静态多态(早绑定)

class A
{
public:
    void do(int a);
    void do(int a, int b);
}

动态多态(晚绑定)

  • 用 virtual 修饰成员函数,使其成为虚函数

注意:

  • 普通函数不能是虚函数
  • 静态函数不能是虚函数
  • 内联函数不能是虚函数
  • 构造函数不能是虚函数
class Shape     //形状类
{
public:
    virtual double calcArea()
    {
        ...
    }

}
class Circle : public Shape     //圆形类
{
public:
    virtual double calcArea();
    ...
}
class Rect : public Shape       //矩形类
{
public:
    virtual double calcArea();
    ...
}
int main()
{
    Shape * shape1 = new Circle(4.0);
    Shape * shape2 = new Rect(5.0, 6.0);
    shape1->calcArea();     //调用圆形类里面的方法
    shape2->calcArea();     //调用矩形类里面的方法
    return 0;
}
  • 虚析构函数
class Shape
{
public:
    Shape();        //构造函数不能是虚函数
    virtual double calcArea();
    virtual ~Shape();    //虚析构函数
}
class Circle : public Shape     //圆形类
{
public:
    virtual double calcArea();
    ...
}
int main()
{
    Shape * shape1 = new Circle(4.0);
    shape1->calcArea();    
    delete shape1;      //因为是虚析构函数,所以调用子类析构函数后,也调用父类析构函数。
    shape1 = NULL;
    return 0;
}
  • 纯虚函数 (含有纯虚函数的类叫做抽象类)
virtual int A() = 0;

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

文章
评论
27 人气
更多

推荐作者

李珊平

文章 0 评论 0

Quxin

文章 0 评论 0

范无咎

文章 0 评论 0

github_ZOJ2N8YxBm

文章 0 评论 0

若言

文章 0 评论 0

南…巷孤猫

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文