继承与多态

C++ 教程 · 第 6 章 · 6 次浏览

继承让子类复用父类代码,多态让同一个接口表现出不同行为。这两个特性是面向对象设计的核心。

继承

class Child : public Parent。子类继承父类的属性和方法,可以重写(override)虚函数。

虚函数与多态

父类用 virtual 声明虚函数,子类重写。通过父类指针/引用调用时,执行子类版本——这就是多态。

纯虚函数与抽象类

virtual void draw() = 0 是纯虚函数,含纯虚函数的类是抽象类,不能实例化,必须被子类实现。

代码示例

#include <iostream>
using namespace std;

// 抽象基类
class Shape {
public:
    virtual double area() = 0;    // 纯虚函数
};

class Circle : public Shape {
private:
    double r;
public:
    Circle(double radius) : r(radius) {}
    double area() override { return 3.14159 * r * r; }
};

class Rect : public Shape {
private:
    double w, h;
public:
    Rect(double width, double height) : w(width), h(height) {}
    double area() override { return w * h; }
};

int main() {
    Shape *shapes[2];
    shapes[0] = new Circle(2);
    shapes[1] = new Rect(3, 4);

    for (int i = 0; i < 2; i++) {
        cout << "面积: " << shapes[i]->area() << endl;
        delete shapes[i];
    }
    return 0;
}