C++中virtual的用法
时间: 2024-09-25 21:12:17 浏览: 42
在C++中,`virtual`关键字用于实现多态的关键特性之一——动态绑定或运行时多态。它主要用于以下几个方面:
1. **虚函数**:当在基类中声明一个函数为`virtual`时,该函数在派生类中变为虚函数。这允许子类覆盖基类中的同名函数,即使通过指向基类对象的指针或引用调用,也会执行子类的实际实现。
```cpp
class Base {
public:
virtual void function() { /* base implementation */ }
};
class Derived : public Base {
public:
// 虚函数的重写
virtual void function() override { /* derived implementation */ }
};
```
2. **纯虚函数**:如果一个函数没有具体的实现(即没有函数体),则需要在其前面加上`=0`,并声明为`virtual`。这样的函数被称为纯虚函数,派生类必须提供这个函数的具体实现,否则派生类也变成纯虚类(abstract class)。
```cpp
class AbstractClass {
public:
virtual void pureVirtualFunction() = 0; // 纯虚函数
};
```
3. **多态的实例化**:为了利用虚拟函数,你可以创建指向基类的对象,然后通过它来调用派生类的成员。这将在运行时确定实际调用的方法。
```cpp
Base* basePtr = new Derived(); // 基类指针,指向派生类
basePtr->function(); // 动态绑定,会调用Derived类的function()
```
阅读全文