写一段代码包括以下特性,包括代码说明,简述目的,用到c++的特性
时间: 2024-09-19 21:03:18 浏览: 59
当然可以,让我们编写一段简单的C++代码,展示封装、继承以及多态的使用。这些是C++面向对象编程的核心特性:
```cpp
// 定义一个基类Shape,包含纯虚函数getArea()
class Shape {
public:
virtual double getArea() const = 0; // 纯虚函数,声明不提供实现
virtual ~Shape() {} // 析构函数,确保析构过程的正确性
};
// 创建派生类Circle,继承自Shape,并实现getArea()方法
class Circle : public Shape {
private:
double radius;
public:
Circle(double r) : radius(r) {}
double getArea() const override { return M_PI * radius * radius; } // 重写基类方法,计算圆面积
};
// 另一个派生类Rectangle,同样继承Shape并实现getArea()方法
class Rectangle : public Shape {
private:
double width, height;
public:
Rectangle(double w, double h) : width(w), height(h) {}
double getArea() const override { return width * height; } // 重写基类方法,计算矩形面积
};
int main() {
// 创建一个Shape类型的指针,指向具体的Circle实例
Shape* shape = new Circle(5.0);
// 调用通过基类指针访问的getArea()方法,显示多态性
cout << "Circle area: " << shape->getArea() << endl;
// 类似地,对Rectangle对象进行操作
Shape* rect = new Rectangle(4.0, 6.0);
cout << "Rectangle area: " << rect->getArea() << endl;
delete shape;
delete rect;
return 0;
}
```
目的:这段代码演示了如何使用C++的面向对象特性创建了一个形状的抽象基类Shape,以及两个具体的形状类Circle和Rectangle。通过虚函数getArea()实现了多态性,使得我们可以根据基类Shape的指针调用相应派生类的方法。
阅读全文