在C++中进行面向对象的设计,主要遵循以下几个步骤和原则:
以下是一个简单的C++面向对象设计的示例:
// 定义一个基类 Shape
class Shape {
public:
virtual double area() const = 0; // 纯虚函数,表示计算面积
virtual ~Shape() {} // 虚析构函数,确保派生类对象被正确销毁
};
// 定义一个派生类 Circle,继承自 Shape
class Circle : public Shape {
private:
double radius;
public:
Circle(double r) : radius(r) {}
double area() const override {
return 3.14159 * radius * radius;
}
};
// 定义一个派生类 Rectangle,继承自 Shape
class Rectangle : public Shape {
private:
double width;
double height;
public:
Rectangle(double w, double h) : width(w), height(h) {}
double area() const override {
return width * height;
}
};
int main() {
// 使用多态性,将 Shape 类型的指针指向 Circle 和 Rectangle 对象
Shape* shape1 = new Circle(5);
Shape* shape2 = new Rectangle(4, 6);
// 调用 area() 函数,计算面积
cout << "Circle area: " << shape1->area() << endl;
cout << "Rectangle area: " << shape2->area() << endl;
// 释放内存
delete shape1;
delete shape2;
return 0;
}
在这个示例中,我们定义了一个基类 Shape
和两个派生类 Circle
和 Rectangle
。基类中包含一个纯虚函数 area()
,表示计算面积。派生类中实现了这个函数,以计算各自形状的面积。在 main()
函数中,我们使用多态性,将 Shape
类型的指针指向 Circle
和 Rectangle
对象,并调用它们的 area()
函数计算面积。