21xrx.com
2024-11-08 21:15:16 Friday
登录
文章检索 我的文章 写文章
如何使用C++父类指针调用子类函数?
2023-06-22 07:36:56 深夜i     --     --
C++ 父类指针 子类函数 继承 多态

C++中的继承是面向对象编程中非常重要的一个概念,有时候我们需要通过父类的指针来调用子类中的函数。该如何实现呢?

首先需要了解的是,C++中的多态性是通过虚函数来实现的。虚函数是一种特殊的类成员函数,它允许在子类中重写父类中的函数,并且能够在运行时动态地确定要调用的具体函数。因此,我们需要将父类中想要被重写的函数声明为虚函数。

接下来,我们可以通过使用父类的指针来调用子类中的虚函数。当我们将一个子类对象地址赋给父类指针时,由于子类对象包含所有父类的成员,因此可以使用该指针来访问父类中的成员变量和函数。同时,由于子类中重写了父类的虚函数,当我们调用该函数时,就会自动调用子类中的对应函数。

下面是一个简单的例子,演示如何使用父类指针调用子类函数:


#include <iostream>

using namespace std;

class Animal{

public:

  virtual void sound()

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

  

};

class Cat : public Animal{

public:

  void sound()

    cout << "Meow!" << endl;

  

};

class Dog : public Animal{

public:

  void sound()

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

  

};

int main(){

  Animal* a;

  Cat c;

  Dog d;

  a = &c;

  a->sound(); // This will call the sound function of the Cat class.

  a = &d;

  a->sound(); // This will call the sound function of the Dog class.

  return 0;

}

在上面的例子中,Animal是父类,而Cat和Dog是它的子类。Animal类中的sound函数被声明为虚函数,而Cat和Dog中都重写了它。

在main函数中,我们创建了一个Animal指针a,并将它分别指向了一个Cat和一个Dog对象。通过调用a->sound(),我们成功地调用了子类中实现的sound函数。

总结一下,通过将父类函数声明为虚函数,并使用父类指针来调用子类中的函数,我们可以实现动态绑定(动态确定要调用的具体函数),实现多态性和灵活性。

  
  

评论区

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