21xrx.com
2024-11-25 05:04:19 Monday
登录
文章检索 我的文章 写文章
C++中的虚函数及其继承关系
2023-07-05 08:47:36 深夜i     --     --
C++ 虚函数 继承关系

在C++中,虚函数是一种特殊的函数,它允许在子类中重写父类中定义的函数。这使得C++中的多态性成为可能。在本文中,我们将介绍虚函数及其在继承关系中的作用。

虚函数是一种在父类中定义的函数,可在子类中重写。其关键字为“virtual”。而在父类中使用“virtual”来声明一个函数为虚函数后,子类可以通过重写虚函数来实现多态。如果子类未重写虚函数,则会使用父类中的实现。

下面的代码演示了如何在C++中创建一个虚函数:


class Animal {

public:

  virtual void makeSound()

    std::cout << "Animal making sound!" << std::endl;

  

};

在这个例子中,“makeSound”是一个虚函数。关键字“virtual”告诉编译器,这个函数将在子类中被重写。

现在,假设我们有一个名为cat的子类,它重写了“makeSound”函数:


class Cat : public Animal {

public:

  void makeSound()

    std::cout << "Meow!" << std::endl;

  

};

在这个例子中,子类中的“makeSound”函数将覆盖父类中的“makeSound”函数。例如,如果我们创建了一个名为“animal”的“cat”对象,调用“makeSound”,则输出将是“Meow!”而不是“Animal making sound!”。

可以看出,虚函数在继承关系中有很大的用处。通过在父类中创建虚函数,我们可以在子类中实现特定的行为。这使得C++中的多态性成为可能。在OOP(面向对象编程)中,多态性是一个非常重要的概念,因为它允许我们通过使用一个接口来操作对象,而不必关心具体对象的实现。

在C++中,我们还可以使用纯虚函数(也称为抽象函数)。纯虚函数是一个没有定义实现的虚函数。如果一个类包含至少一个纯虚函数,则该类被称为抽象类。抽象类不能被实例化,但可以用作其他类的基类。

下面的代码演示了如何在C++中创建一个纯虚函数:


class Shape {

public:

  virtual double getArea() = 0;

  virtual double getPerimeter() = 0;

};

在这个例子中,“getArea”和“getPerimeter”函数是纯虚函数。即使我们在基类中声明了这些函数,但我们并没有提供实现方式。这意味着这个类不能用于实例化,而只能用作其他类的基类。

总之,在C++中,虚函数是一种非常有用的工具,用于在继承关系中实现多态性。虚函数允许子类重写父类的函数,并在运行时基于实际对象来调用相应的函数。此外,纯虚函数允许我们创建抽象类,使其成为其他类的基类。

  
  

评论区

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