c++图形类的例子
时间: 2024-09-06 18:02:25 浏览: 54
在C++中,图形类通常用于创建图形界面或者处理图形数据。下面我将给出一个简单的图形类的例子,这个例子中包含了一个基类Shape,它将定义一些基本的图形功能,然后通过派生类来表示具体的图形。
```cpp
#include <iostream>
#include <string>
// 基类Shape
class Shape {
protected:
std::string shapeName;
public:
Shape(const std::string& name) : shapeName(name) {}
// 纯虚函数,用于计算面积
virtual double area() const = 0;
// 纯虚函数,用于计算周长
virtual double perimeter() const = 0;
// 获取图形名称
const std::string& getName() const {
return shapeName;
}
// 纯虚析构函数,确保派生类对象可以正确析构
virtual ~Shape() {}
};
// 派生类Circle表示圆形
class Circle : public Shape {
private:
double radius;
public:
Circle(double r) : Shape("Circle"), radius(r) {}
double area() const override {
return 3.14159 * radius * radius;
}
double perimeter() const override {
return 2 * 3.14159 * radius;
}
};
// 派生类Rectangle表示矩形
class Rectangle : public Shape {
private:
double width, height;
public:
Rectangle(double w, double h) : Shape("Rectangle"), width(w), height(h) {}
double area() const override {
return width * height;
}
double perimeter() const override {
return 2 * (width + height);
}
};
int main() {
Circle c(5.0);
Rectangle r(4.0, 6.0);
std::cout << "Circle area: " << c.area() << ", perimeter: " << c.perimeter() << std::endl;
std::cout << "Rectangle area: " << r.area() << ", perimeter: " << r.perimeter() << std::endl;
return 0;
}
```
在这个例子中,Shape是一个抽象基类,它定义了两个纯虚函数area()和perimeter(),用于计算图形的面积和周长。Circle和Rectangle都是Shape的派生类,分别实现了它们自己的area和perimeter函数。这样的设计符合面向对象原则中的开闭原则,意味着你可以在不修改现有代码的情况下,增加新的图形类。
阅读全文