继承与多态
继承让子类复用父类代码,多态让同一个接口表现出不同行为。这两个特性是面向对象设计的核心。
继承
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;
}