用c++写一个复杂的玫瑰花,用到类、继承、派生
时间: 2024-02-04 09:04:25 浏览: 134
C++写的玫瑰花
4星 · 用户满意度95%
以下是一个使用类、继承和派生的复杂玫瑰花 C++ 代码示例:
```c++
#include <iostream>
#include <cmath>
using namespace std;
class Flower {
protected:
double k, n;
public:
Flower(double k, double n) : k(k), n(n) {}
virtual void draw() = 0;
};
class Rose : public Flower {
private:
double d;
public:
Rose(double k, double n, double d) : Flower(k, n), d(d) {}
void draw() {
double r;
for (double theta = 0.0; theta <= 2.0 * M_PI; theta += 0.01) {
r = k * cos(n * theta / d);
cout << r * cos(theta) << ", " << r * sin(theta) << endl;
}
}
};
class Lily : public Flower {
private:
double a;
public:
Lily(double k, double n, double a) : Flower(k, n), a(a) {}
void draw() {
double r;
for (double theta = 0.0; theta <= 2.0 * M_PI; theta += 0.01) {
r = k * sin(n * theta + a);
cout << r * cos(theta) << ", " << r * sin(theta) << endl;
}
}
};
int main() {
Flower* flowers[2];
flowers[0] = new Rose(5.0, 8.0, 13.0);
flowers[1] = new Lily(5.0, 4.0, 2.0);
for (int i = 0; i < 2; i++) {
flowers[i]->draw();
cout << endl;
}
return 0;
}
```
在这个示例代码中,Flower 类是一个抽象基类,定义了一个纯虚函数 draw()。Rose 和 Lily 类都继承自 Flower 类,并实现了 draw() 函数。
Rose 和 Lily 类有不同的参数,用于绘制不同形状的花朵。在 main() 函数中,创建一个 Flower 类型的数组,其中包含两个元素,一个是 Rose 对象,一个是 Lily 对象。在 for 循环中,调用每个对象的 draw() 函数绘制相应的花朵图形。这里使用了指针数组,可以通过基类指针访问派生类对象的成员函数。
这个示例代码展示了类的继承和派生的基本用法,以及抽象基类和纯虚函数的概念。
阅读全文