在C++中進(jìn)行面向?qū)ο蟮脑O(shè)計(jì),主要遵循以下幾個(gè)步驟和原則:
以下是一個(gè)簡(jiǎn)單的C++面向?qū)ο笤O(shè)計(jì)的示例:
// 定義一個(gè)基類 Shape
class Shape {
public:
virtual double area() const = 0; // 純虛函數(shù),表示計(jì)算面積
virtual ~Shape() {} // 虛析構(gòu)函數(shù),確保派生類對(duì)象被正確銷毀
};
// 定義一個(gè)派生類 Circle,繼承自 Shape
class Circle : public Shape {
private:
double radius;
public:
Circle(double r) : radius(r) {}
double area() const override {
return 3.14159 * radius * radius;
}
};
// 定義一個(gè)派生類 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() {
// 使用多態(tài)性,將 Shape 類型的指針指向 Circle 和 Rectangle 對(duì)象
Shape* shape1 = new Circle(5);
Shape* shape2 = new Rectangle(4, 6);
// 調(diào)用 area() 函數(shù),計(jì)算面積
cout << "Circle area: " << shape1->area() << endl;
cout << "Rectangle area: " << shape2->area() << endl;
// 釋放內(nèi)存
delete shape1;
delete shape2;
return 0;
}
在這個(gè)示例中,我們定義了一個(gè)基類 Shape
和兩個(gè)派生類 Circle
和 Rectangle
?;愔邪粋€(gè)純虛函數(shù) area()
,表示計(jì)算面積。派生類中實(shí)現(xiàn)了這個(gè)函數(shù),以計(jì)算各自形狀的面積。在 main()
函數(shù)中,我們使用多態(tài)性,將 Shape
類型的指針指向 Circle
和 Rectangle
對(duì)象,并調(diào)用它們的 area()
函數(shù)計(jì)算面積。