它的行为取决于调用它的对象的类型。在 C++ 中,虚函数通过在函数声明前加上关键字 virtual 来实现。虚函数通常被用在基类中,以便被派生类重写。
时间: 2024-04-12 07:27:39 浏览: 83
C++中虚函数的实现机制
4星 · 用户满意度95%
没错,你对虚函数的定义和用法描述得很准确。在C++中,虚函数是一种特殊的成员函数,它在基类中声明为虚函数,然后可以在派生类中重写(覆盖)该函数。通过使用关键字virtual来声明虚函数,编译器会为每个具有虚函数的类创建一个虚函数表(vtable)。当通过基类指针或引用调用虚函数时,实际上是根据对象的类型来决定调用哪个版本的虚函数,这就是多态性的概念。
例如,考虑以下代码示例:
```cpp
class Base {
public:
virtual void foo() {
cout << "Base::foo() called" << endl;
}
};
class Derived : public Base {
public:
void foo() override {
cout << "Derived::foo() called" << endl;
}
};
int main() {
Base* ptr = new Derived();
ptr->foo(); // Derived::foo() called
delete ptr;
return 0;
}
```
在这个例子中,基类Base中的foo()函数被声明为虚函数,并在派生类Derived中进行了重写。在main函数中,使用基类指针ptr指向派生类对象,并通过该指针调用foo()函数。由于foo()函数是虚函数,所以实际调用的是派生类中重写的版本。
这种通过基类指针或引用调用派生类对象的虚函数的方式,使得我们能够在运行时确定调用的是哪个版本的函数,从而实现了多态性。这是C++中面向对象编程的重要特性之一。
阅读全文