diff options
fixed poly
1 files changed, 50 insertions, 0 deletions
| -rw-r--r-- | Polymorphism/Shapes/Shape.cpp | 50 |
diff --git a/Polymorphism/Shapes/Shape.cpp b/Polymorphism/Shapes/Shape.cpp new file mode 100644 index 0000000..0751108 --- /dev/null +++ b/Polymorphism/Shapes/Shape.cpp @@ -0,0 +1,50 @@ +#include "Shape.h" + +Shape::Shape(int pointsCount) +{ + points = new Point[pointsCount]; + this->pointsCount = pointsCount; +} + +void Shape::setPoint(int x, int y, int ind) +{ + Point current(x, y); + points[ind] = current; + +} + +const Point& Shape::getPoint(int ind) +{ + return points[ind]; +} + +void Shape::CopyFrom(const Shape& other) +{ + points = new Point[other.pointsCount]; + pointsCount = other.pointsCount; + + for (int i = 0; i < pointsCount; i++) + points[i] = other.points[i]; +} +void Shape::Free() +{ + delete[] points; + pointsCount = 0; +} +Shape::Shape(const Shape& other) +{ + CopyFrom(other); +} +Shape& Shape::operator=(const Shape& other) +{ + if (this != &other) + { + Free(); + CopyFrom(other); + } + return *this; +} +Shape::~Shape() +{ + Free(); +} |
