21xrx.com
2025-03-28 14:58:14 Friday
文章检索 我的文章 写文章
C++中的虚函数(virtual)
2023-06-25 18:07:46 深夜i     10     0
C++ 虚函数 virtual

C++ 中的虚函数是一种特殊的函数,可以被继承类中同名函数覆盖。虚函数的关键在于其动态多态性,即在程序运行时才能确定使用哪个函数。

虚函数在类中的声明形式为在函数前面加上 virtual 关键字,如下所示:

class Base {
public:
  virtual void function()
   // 函数体
 
};

当一个继承类继承了基类,并覆盖了基类中的虚函数,继承类中的函数会被当做基类中的虚函数,如下所示:

class Derived : public Base {
public:
  void function()
   // 函数体
 
};

在程序运行时,如果一个指向基类对象的指针或引用被赋值为继承类的对象,那么调用虚函数时就会根据指针或引用实际指向的对象来决定调用哪个函数,如下所示:

Base *baseObj = new Derived();
baseObj->function(); // 调用 Derived 类中的 function() 函数

虚函数的实现依赖于虚函数表,也称为 vtable。每个包含虚函数的类都有一个单独的虚函数表,其中包含该类所有虚函数的地址。在程序运行时,编译器会创建一个虚函数表,并将其与类的对象相关联。当调用被标记为虚函数时,程序会在虚函数表中查找正确的函数地址,然后调用该函数。

虚函数是 C++ 中实现多态性的重要机制,能够让基类指针或引用在运行时调用派生类中的函数,是面向对象编程中非常基础和核心的概念。

  
  

评论区