虚函数实现多态
时间: 2023-08-04 09:23:39 浏览: 103
虚函数是C++中用于实现多态(polymorphism)的机制
虚函数是实现C++多态性的重要手段。通过定义虚函数,可以在基类和派生类之间建立动态绑定关系,实现多态。
在C++中,定义虚函数需要在函数声明前面加上`virtual`关键字,例如:
```
class Base {
public:
virtual void func();
};
class Derived : public Base {
public:
void func();
};
```
在上面的代码中,`Base`类中定义了一个虚函数`func`,派生类`Derived`中也定义了一个同名的函数`func`。由于`Base`类中的`func`函数被声明为虚函数,因此在基类指针指向派生类对象时,调用`func`函数时会根据对象实际的类型来进行动态绑定,从而调用派生类中的`func`函数。
例如:
```
Base *ptr = new Derived();
ptr->func(); // 调用Derived类中的func函数
```
上面的代码中,`ptr`是一个指向`Derived`类对象的基类指针。调用`func`函数时,会根据`Derived`类的实际类型进行动态绑定,从而调用`Derived`类中的`func`函数。
虚函数的实现机制是通过为每个对象添加一个虚函数表(VTable)来实现的。虚函数表是一个指向虚函数地址的指针数组,每个对象都有一个指向其对应的虚函数表的指针。在调用虚函数时,首先会根据对象的虚函数表找到对应的函数地址,然后进行调用。
总的来说,虚函数实现了C++中的动态绑定机制,是多态性的关键。通过定义虚函数,可以在基类和派生类之间建立动态绑定关系,实现多态。
阅读全文