21xrx.com
2024-12-23 02:23:21 Monday
登录
文章检索 我的文章 写文章
C++多态性的实例
2023-06-24 11:56:35 深夜i     --     --
C++ 多态性 虚函数 继承 多态态绑定

C++是一种面向对象的编程语言,支持多态性。多态性是指同一个函数名可以实现多种不同的行为。以下是C++多态性的实例。

1. 虚函数

虚函数是C++多态性的一种实现方式。虚函数允许子类重写父类的方法,从而实现多态性。例如:


class Animal {

public:

  virtual void makeSound()

    cout << "This animal makes a sound." << endl;

  

};

class Cat : public Animal {

public:

  void makeSound()

    cout << "Meow!" << endl;

  

};

class Dog : public Animal {

public:

  void makeSound()

    cout << "Woof!" << endl;

  

};

int main() {

  Animal* animalPtr;

  Cat cat;

  Dog dog;

  animalPtr = &cat;

  animalPtr->makeSound();

  animalPtr = &dog;

  animalPtr->makeSound();

  return 0;

}

在上面的例子中,Animal类有一个虚函数makeSound()。Cat类和Dog类继承自Animal类,并重写makeSound()方法。在main函数中,通过给定的指针调用makeSound()方法。因为makeSound()方法是一个虚函数,所以它会根据指针所指向对象的实际类型而调用相应的makeSound()方法。通过使用虚函数,我们可以实现多态性。

2. 纯虚函数

纯虚函数是一种在基类中声明但不定义的虚函数。任何一个派生类都必须实现该函数。这种方法可以确保所有派生类都实现了一定的功能。例如:


class Shape {

public:

  virtual double area() = 0;

};

class Rectangle : public Shape {

public:

  double area() {

    return height * width;

  }

private:

  double height;

  double width;

};

class Circle : public Shape {

public:

  double area() {

    return pi * radius * radius;

  }

private:

  double pi = 3.14159;

  double radius;

};

int main() {

  Rectangle rect;

  Circle circle;

  cout << rect.area() << endl;

  cout << circle.area() << endl;

  return 0;

}

在上面的例子中,Shape类有一个纯虚函数area()。Rectangle类和Circle类继承自Shape类,并实现了area()方法。Rectangle和Circle的实例可以通过area()方法来计算其面积。由于每个派生类都必须实现area()方法,所以可以确保所有类型的Shape都能够计算面积。

总之,C++多态性的实现有很多种方式。本文介绍了使用虚函数和纯虚函数的两种方式。这两种方式都可以实现多态性,从而使程序更加灵活和易于扩展。

  
  

评论区

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