21xrx.com
2024-11-05 16:36:08 Tuesday
登录
文章检索 我的文章 写文章
C++运行时多态性
2023-07-04 23:21:18 深夜i     --     --
C++ 运行时多态性 OOP 虚函数 动态绑定

C++是一种多范式编程语言,支持静态多态性和运行时多态性。其中,运行时多态性指的是实现动态绑定的能力,即在程序运行时确定对象的类型,以调用相应的成员函数。在C++中,运行时多态性是通过虚函数实现的。

虚函数是在基类中声明的,用关键字“virtual”修饰的成员函数。在派生类中,可以覆盖基类中的虚函数。当基类指针指向派生类对象时,通过该指针调用虚函数时,程序将根据指针实际所指的对象类型来确定应该调用的函数。

下面是一个基类和派生类的简单示例:


class Shape {

public:

  virtual void draw()

    cout << "Drawing a shape." << endl;

  

};

class Circle : public Shape {

public:

  void draw()

    cout << "Drawing a circle." << endl;

  

};

在这个例子中,Shape类包含一个虚函数draw(),在派生类Circle中覆盖了该函数。

下面是一个使用多态性的示例代码:


int main() {

  Shape* s1 = new Shape();

  Shape* s2 = new Circle();

  

  s1->draw(); // 调用 Shape 的 draw()

  s2->draw(); // 调用 Circle 的 draw()

  

  delete s1;

  delete s2;

}

在这个示例中,使用基类指针分别指向基类和派生类对象,并调用它们的draw()函数。程序运行结果如下:


Drawing a shape.

Drawing a circle.

可以看到,程序正确地根据指针所指的对象类型,调用了相应的函数。

在实际编程中,可以通过虚函数实现更复杂的多态性。C++标准库中的许多类,如std::vector、std::map等,都使用虚函数实现了多态性,并且这些类是C++程序中经常使用的容器类。

总之,C++的运行时多态性是通过虚函数实现的,可以在程序运行时确定对象的类型,并根据类型调用相应的成员函数,为程序开发提供了更加灵活和可扩展的能力。

  
  

评论区

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