21xrx.com
2024-09-20 00:22:23 Friday
登录
文章检索 我的文章 写文章
如何在 C++ 中调用基类虚函数
2023-07-09 15:22:29 深夜i     --     --
C++ 基类 虚函数 调用 继承

在 C++ 中,继承是一种重要的特性,它可以让我们从已有的类中派生出新的类,并且可以使用父类的属性和方法。在这个过程中,虚函数是一种特殊的函数,它可以根据具体的对象类型来动态地调用不同的函数。

当我们在子类中定义一个和父类中虚函数名字相同的函数时,这个函数会成为子类的虚函数。在调用虚函数时,编译器会查找对象的实际类型,并且调用该类型的函数。如果在子类中没有定义该虚函数,编译器会继续向上查找父类中的该函数,直到找到为止。

那么,如何在子类中调用父类中的虚函数呢?我们可以使用作用域解析符号“::”,来显式地调用父类中的虚函数。以下是一个简单的示例:


#include <iostream>

using namespace std;

class Animal {

 public:

  virtual void sound()

   cout << "Animal can make sound!" << endl;

  

};

class Cat : public Animal {

 public:

  void sound()

   cout << "Cat can meow!" << endl;

  

  void animalSound() {

   Animal::sound(); // 调用父类中的虚函数

  }

};

int main() {

 Cat cat;

 cat.sound();

 cat.animalSound();

 return 0;

}

在上面的示例中,我们定义了一个 Animal 类和一个 Cat 类,Cat 类继承了 Animal 类。Animal 类中有一个虚函数 sound(),在 Cat 类中我们重写了该函数并且定义了一个新函数 animalSound(),在该函数中我们使用作用域解析符号“::”来显式地调用父类中的虚函数。

在输出结果中,我们可以看到 Cat 类中的 sound() 函数输出了“Cat can meow!”的字符串,而在调用 animalSound() 函数中我们使用 Animal::sound() 调用了 Animal 类中的虚函数 sound(),这时候输出结果为“Animal can make sound!”。

总之,在 C++ 中调用父类中的虚函数是可能的,我们可以使用作用域解析符号“::”来显式地调用父类中的虚函数。这样可以让我们更好的控制虚函数的调用和继承关系。

  
  

评论区

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