21xrx.com
2024-09-19 09:40:05 Thursday
登录
文章检索 我的文章 写文章
如何在C++中实现父类调用子类的函数
2023-07-09 09:53:07 深夜i     --     --
C++ 继承 多态 虚函数 动态绑定

在C++中,一个父类可以调用子类的函数,这种调用方式被称作“多态”。多态的实现方式有很多种,其中一种常用的方式是通过虚函数实现。

在C++中,如果一个类想要调用子类的函数,它必须将该函数声明为虚函数。虚函数是一种特殊的函数,可以在子类中被重写。当一个父类对象调用一个虚函数时,它会自动调用相应的子类函数,实现了父类调用子类的功能。

下面是一个简单的例子,展示如何在C++中实现父类调用子类的函数:


#include <iostream>

using namespace std;

class Animal {

public:

  virtual void makeSound()

    cout << "This is an animal sound." << endl;

  

};

class Dog : public Animal {

public:

  void makeSound()

    cout << "Woof! Woof!" << endl;

  

};

int main() {

  Animal* ptr = new Dog();  //使用父类指针指向子类对象

  ptr->makeSound();     //调用虚函数

  delete ptr;

  return 0;

}

在上面的例子中,Animal和Dog是两个类,Dog是Animal的子类。在主函数中,我们定义了一个Animal类型的指针ptr,将它指向一个Dog类型的对象。这里使用了动态内存分配,也可以使用栈空间或者其他方式。

接着,我们调用了ptr的makeSound()函数,这个函数是虚函数,并且在子类Dog中被重写。由于ptr指向的是一个Dog对象,因此调用的实际上是Dog类中的makeSound()函数。程序输出的结果为“Woof! Woof!”,这就实现了父类调用子类的功能。

需要注意的是,在使用虚函数时,如果在父类中的虚函数没有被重写,那么调用该函数时仍然会使用父类中的实现。因此,虚函数的重写是实现多态的关键。

总的来说,使用虚函数实现多态是C++中常用的方法之一,可以方便地实现父类调用子类的功能。在实际编程中,可以根据具体的需求选择不同的实现方式。

  
  

评论区

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