C++ 中的virtual
时间: 2024-09-20 08:03:25 浏览: 36
浅谈C++中virtual的三种用法
在C++中,`virtual`关键字是一个关键的概念,主要用于实现动态绑定或晚期绑定,这是面向对象编程中的多态机制之一。当在基类中声明一个成员函数为`virtual`时,它的目的有两个:
1. **函数覆盖**(Function Overriding):如果在派生类中也声明了一个同名函数,那么这个派生类的函数会自动覆盖基类的虚拟函数。当你通过基类指针或引用调用这个函数时,将根据实际的对象类型而不是指针类型来决定调用哪个函数,这就是所谓的运行时多态或动态绑定。
```cpp
class Base {
public:
virtual void display() { /* ... */ }
};
class Derived : public Base {
public:
virtual void display() override { /* ... */ } // `override`确保了是正确的覆盖
};
```
2. **构造函数和析构函数的虚化**:虽然不是必需的,但在派生类中可以为基类的默认构造函数或析构函数添加`virtual`关键字,使得可以创建基类的动态实例,并能正确地初始化或清理派生类的对象。
```cpp
class Base {
public:
virtual ~Base(); // 虚析构函数
};
class Derived : public Base {
// ...
};
```
阅读全文