Скачиваний:
8
Добавлен:
01.05.2014
Размер:
1.8 Кб
Скачать
#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;
Соседние файлы в папке lab1_1