虚函数和纯虚函数有何区别?
时间: 2024-08-14 07:09:03 浏览: 54
C++学习篇?纯虚函数和抽象类
5星 · 资源好评率100%
虚函数和纯虚函数是C++中面向对象设计的重要特性,它们的主要区别在于是否能够直接实例化。
1. **虚函数**(Virtual Function):
- 实际上是可以被调用的函数,它允许派生类提供自己的实现。
- 基类声明了一个虚函数,然后在派生类中可以选择是否覆盖该函数并实现它。
- 如果不提供覆盖,虚函数在基类的对象上调用的是基类的版本,这是动态绑定的一个例子。
2. **纯虚函数**(Pure Virtual Function):
- 纯虚函数是一个没有具体实现的函数,它在基类中声明时前面会加上`= 0`。
- 派生类必须重写纯虚函数,否则派生类也会变成抽象类,即无法直接创建对象,只能作为基类使用。
- 纯虚函数主要用于定义一个抽象类,它为所有继承自它的类提供了一种公共的行为框架。
总结来说,虚函数允许在运行时选择行为,而纯虚函数则强制子类提供特定行为,使得它们不能被实例化,只用于规范继承层次结构。如果你试图创建一个包含纯虚函数的类的新对象,编译器会报错提示缺少实现。
阅读全文