Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лабораторная работа 11 / lab1_3 / Triangle
.cpp#include "stdafx.h"
#include "Triangle.h"
#include "Line.h"
#include "Shape.h"
Triangle::Triangle(): id(++total){
count++;
cout << "create Triangle#" << id << endl;
this->point = new Point();
}
Triangle::Triangle(Point* p1, Point* p2, Point* p3): Line(p1, p2), id(++total){
count++;
cout << "create Triangle#" << id << endl;
this->point = new Point(p3);
}
Triangle::Triangle(const Triangle* o): Line(o), id(++total){
count++;
cout << "create Triangle#" << id << " via cc" << endl;
this->point = new Point(o->point);
}
Triangle::Triangle(const Triangle& o): Line(o), id(++total){
count++;
cout << "create Triangle#" << id << " via cc" << endl;
this->point = new Point(o.point);
}
Triangle::~Triangle(){
count--;
cout << "destroy Triangle#" << id << endl;
delete point;
}
ostream& Triangle::print(ostream& os) const{
os << "Triangle#" << id << ": " << endl
<< toString();
return os;
}
Triangle& Triangle::operator= (const Triangle& o){
if(this == &o)
return *this;
Line::operator=(o);
// call copy-assignment
*(this->point) = o.point;
return *this;
}
Point* Triangle::getPoint(int n){
if (n == 1)
return Line::getPoint(1);
else if (n == 2)
return Line::getPoint(2);
else
return point;
}
void Triangle::moveBy(const double x, const double y){
Line::moveBy(x,y);
point->moveBy(x,y);
cout << "Triangle was moved by (" << x << ";" << y << ")" << endl;
}
string Triangle::toString() const {
return Line::toString() + " Point3: " + point->toString();
}
int Triangle::operator==(const Triangle& o) const {
return (Line::operator==(o) && (*point == *o.point));
};
// initialize static fields
unsigned long int Triangle::count = 0;
unsigned long int Triangle::total = 0;