C++多态与虚函数
C++多态与虚函数详解
多态(Polymorphism)是 C++ 面向对象编程的重要特性,通过统一的接口实现不同的行为。虚函数(Virtual Function)是实现运行时多态的核心机制。以下从多态的构成条件、意义、析构函数的虚函数化、纯虚函数和抽象类,以及虚函数表的底层实现依次介绍。
1. 构成多态的条件及意义
构成多态的条件
运行时多态(动态多态)的实现需要满足以下条件:
- 继承关系:
- 必须存在一个基类和至少一个派生类。
- 虚函数:
- 基类中至少有一个成员函数被声明为
virtual
。
- 基类中至少有一个成员函数被声明为
- 基类指针或引用:
- 通过基类的指针或引用操作派生类对象。
- 子类函数重写:
- 派生类需使用相同函数签名重写基类的虚函数。
多态的意义
- 解耦设计:通过基类定义公共接口,派生类实现具体行为,降低模块间的耦合度。
- 扩展性强:新增派生类时无需修改调用逻辑,只需保证基类接口一致。
- 代码复用:提高代码的可维护性和复用性。
- 动态行为:根据实际对象的类型动态调用对应方法。
示例代码
#include <iostream>
using namespace std;class Shape {
public:virtual void draw() {cout << "Drawing Shape" << endl;}
};class Circle : public Shape {
public:void draw() override {cout << "Drawing Circle" << endl;}
};class Square : public Shape {
public:void draw() override {cout << "Drawing Square" << endl;}