21xrx.com
2024-09-19 10:08:33 Thursday
登录
文章检索 我的文章 写文章
C++多态性实例
2023-07-06 22:37:46 深夜i     --     --
C++语言 多态性 类型兼容 虚函数 继承关系

C++是一门强大的编程语言,具有多种特性,其中一个重要特性就是多态性。多态性是面向对象编程中的一个概念,它允许不同对象以不同的方式响应相同的消息或方法调用。在C++中,多态性的实现往往是通过虚函数和纯虚函数来实现的。

虚函数是一种在基类定义的函数,它带有关键字virtual,可以在派生类中重新定义。虚函数允许通过指向基类对象的指针调用实际上属于派生类的函数。例如,假设有一个Shape基类和两个派生类Circle和Rectangle:


class Shape {

  public:

   virtual double getArea() = 0;

};

class Circle : public Shape {

  public:

   double getArea()

     //计算圆面积的公式

   

};

class Rectangle : public Shape {

  public:

   double getArea()

     //计算矩形面积的公式

   

};

以上例子中,getArea()被声明为虚函数。在实际使用中,我们可以通过指向基类对象的指针来调用getArea()函数,并根据所指向的派生类类型来获得真正的函数实现。例如:


Shape *shape;

Circle circle;

Rectangle rect;

shape = &circle;

shape->getArea();

shape = ▭

shape->getArea();

以上代码中,我们使用shape指向基类对象Circle和Rectangle,并分别调用它们的getArea()函数。在每种情况下,指向基类的指针都会调用正确的派生类函数计算图形的面积。

另外一种实现多态性的方式是通过纯虚函数。纯虚函数是指在基类中定义的没有实现的虚函数,它们不需要提供函数体,但是必须在派生类中实现。例如:


class Animal {

  public:

   virtual void makeSound() = 0;

};

class Dog : public Animal {

  public:

   void makeSound()

     //实现狗叫的声音

   

};

class Cat : public Animal {

  public:

   void makeSound()

     //实现猫叫的声音

   

};

以上例子中,makeSound()被定义为纯虚函数,并且在派生类中必须实现。在实际使用中,我们可以使用指向基类对象的指针调用makeSound()函数,并根据所指向的派生类类型来获得真正的函数实现。例如:


Animal *animal;

Dog dog;

Cat cat;

animal = &dog;

animal->makeSound();

animal = &cat;

animal->makeSound();

以上代码中,我们使用animal指向基类对象Dog和Cat,并分别调用它们的makeSound()函数。在每种情况下,指向基类的指针都会调用正确的派生类函数实现。

总结来说,多态性允许不同类型的对象以不同的方式响应相同的消息或方法调用,这使得程序的设计更加灵活和可扩展。在C++中,多态性的实现往往是通过虚函数和纯虚函数来实现的。虚函数允许在基类定义函数,并且在派生类中重新定义;纯虚函数则是在基类中定义没有实现的虚函数,并要求在派生类中实现。通过这些方式,我们可以轻松地实现多态性,为程序的设计带来更多的选择和可能性。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复
    相似文章