虚函数和纯虚函数有何区别?
时间: 2024-09-18 13:04:54 浏览: 46
C++学习篇?纯虚函数和抽象类
5星 · 资源好评率100%
虚函数和纯虚函数都是C++中面向对象特性的关键组成部分,它们的区别在于:
1. **虚函数**(Virtual Function):是一个可以在其基类和派生类中定义的实际函数,它有一个默认的实现,但在派生类中可以被覆盖(重写)以提供特定的行为。如果基类声明了一个虚函数,那么对基类指针或引用调用该函数时会执行相应派生类的实现。例如:
```cpp
class Base {
virtual void fun() { /* 基类默认实现 */ }
};
class Derived : public Base {
void fun() override { /* 派生类的实现 */ }
};
```
2. **纯虚函数**(Pure Virtual Function):是一种特殊的虚函数,没有实现,只有函数声明而没有具体的功能。在声明纯虚函数时,需要在其前面加上`= 0`或`= nullptr`。派生类若想实例化一个含有纯虚函数的基类,就必须提供具体的实现,否则派生类本身也将成为抽象类。例如:
```cpp
class AbstractBase {
virtual void pureFunc() = 0; // 纯虚函数
};
```
阅读全文