纯虚函数与虚函数的区别 举例说明
时间: 2023-08-08 20:10:01 浏览: 102
举个例子来说明纯虚函数和虚函数的区别:
```c++
class Shape {
public:
virtual void draw() = 0; // 纯虚函数
virtual void resize() { } // 虚函数,有默认实现
};
class Circle : public Shape {
public:
void draw() override {
// 绘制圆形
}
};
class Square : public Shape {
public:
void draw() override {
// 绘制正方形
}
void resize() override {
// 修改正方形大小
}
};
int main() {
Shape* shape1 = new Circle();
Shape* shape2 = new Square();
shape1->draw(); // 调用 Circle 类的 draw 函数
shape2->draw(); // 调用 Square 类的 draw 函数
shape1->resize(); // 调用 Shape 类的 resize 函数
shape2->resize(); // 调用 Square 类的 resize 函数
return 0;
}
```
在上面的例子中,Shape 类是一个抽象类,因为它包含了一个纯虚函数 draw() = 0。因此,无法直接实例化 Shape 类。Circle 类和Square 类都是Shape 类的子类,并且都必须实现 draw() 函数。由于 Square 类重写了 resize() 函数,因此在调用 shape2->resize() 时会调用 Square 类的 resize() 函数。
总之,纯虚函数和虚函数都是实现多态性的重要特性,它们的区别在于纯虚函数是没有实现的抽象函数,必须在子类中实现,而虚函数有默认实现,可以被子类重写。
阅读全文