21xrx.com
2024-12-22 23:53:08 Sunday
登录
文章检索 我的文章 写文章
C++中的多态实现方法
2023-07-01 21:49:52 深夜i     --     --
C++ 多态 实现方法

在C++中,多态是一种非常重要的特性,它能够让我们通过基类指针调用不同的派生类成员函数。实现多态的方法有以下两种。

1. 虚函数

虚函数是C++中实现多态的主要方式。当一个子类继承自父类并重写其中一个函数时,如果父类中的该函数被声明为虚函数,那么子类中同名的函数也应该被声明为虚函数。在使用基类指针调用该函数时,程序会根据指针指向的对象类型来自动调用相应的函数。


class Shape {

public:

  virtual void draw() { // 父类虚函数

    cout << "Drawing a shape.\n";

  }

};

class Rectangle : public Shape {

public:

  void draw() { // 子类重写虚函数

    cout << "Drawing a rectangle.\n";

  }

};

int main() {

  Shape* shape = new Rectangle();

  shape->draw(); // 调用子类的 draw() 函数

  delete shape;

  return 0;

}

上述代码中,Shape类是父类,Rectangle类是其子类,并重写了draw()函数。当Shape类的指针指向Rectangle类的实例时,调用draw()函数会自动调用子类的函数,即输出“Drawing a rectangle.”。

2. 纯虚函数

纯虚函数是一种特殊的虚函数,在父类中只有函数声明而没有实现。被声明为纯虚函数的函数在子类中必须被重写,否则子类不能被实例化。当一个类中存在纯虚函数时,该类被称为抽象类。


class Shape {

public:

  virtual void draw() = 0; // 声明纯虚函数

};

class Rectangle : public Shape {

public:

  void draw() { // 实现纯虚函数

    cout << "Drawing a rectangle.\n";

  }

};

int main() {

  Shape* shape = new Rectangle();

  shape->draw(); // 调用子类的 draw() 函数

  delete shape;

  return 0;

}

在上述代码中,Shape类中的draw()函数被声明为纯虚函数,只有函数声明而没有具体实现。因此,Rectangle类在继承自Shape类之后必须重写draw()函数,并提供具体实现。

综上所述,虚函数和纯虚函数是实现多态的两种方式。在使用时,可以根据具体的需求选择合适的方法来实现多态。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复