21xrx.com
2024-12-22 23:14:56 Sunday
登录
文章检索 我的文章 写文章
C++的多态实现方法
2023-06-28 13:01:49 深夜i     --     --
C++ 多态 实现方法

C++是一种高级编程语言,支持多态性的实现方法。多态是指同一操作作用于不同的对象上会产生不同的结果。C++中的多态性通过虚函数和纯虚函数来实现。

虚函数是在基类中声明的函数,它的实际调用是在派生类中实现的。当基类指针或引用指向派生类的对象时,如果有虚函数被调用,那么实际执行的是派生类中的实现。这种机制被称为运行时多态性,因为实际调用的函数是在运行时才确定的。例如:


class Animal {

public:

  virtual void speak() {

    std::cout << "I am an animal\n";

  }

};

class Cat: public Animal {

public:

  void speak() {

    std::cout << "I am a cat\n";

  }

};

int main() {

  Animal* animal = new Cat();

  animal->speak(); // 输出 "I am a cat"

  delete animal;

  return 0;

}

在上面的例子中,我们定义了一个基类 `Animal`,它有一个虚函数 `speak`,在派生类 `Cat` 中实现了这个函数。在 `main` 函数中,我们使用基类指针指向派生类对象,调用了 `speak` 函数,并输出了 `I am a cat`。

纯虚函数是在基类中声明的抽象函数,它没有实现,只是用来占位的。纯虚函数必须在派生类中重新实现才能被调用。派生类如果没有重新实现纯虚函数,那么它也是一个抽象类,无法被实例化。例如:


class Shape {

public:

  virtual double area() = 0;

};

class Rectangle: public Shape {

public:

  Rectangle(double l, double w): length(l), width(w) {}

  double area() {

    return length * width;

  }

private:

  double length;

  double width;

};

int main() {

  Shape* shape = new Rectangle(5, 3);

  std::cout << "Area: " << shape->area() << std::endl;

  delete shape;

  return 0;

}

在这个例子中,我们定义了一个基类 `Shape`,它有一个纯虚函数 `area`。我们派生了一个 `Rectangle` 类,实现了这个函数,用于计算矩形的面积。在 `main` 函数中,我们使用基类指针指向 `Rectangle` 对象,调用了 `area` 函数,并输出了计算出的面积。

通过虚函数和纯虚函数,C++很好地实现了多态性,让代码更加灵活和可扩展。在实际的开发中,多态性被广泛应用,是提高代码质量和复用性的重要手段。

  
  

评论区

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