Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

12пми / Vector2D

.cpp
Скачиваний:
17
Добавлен:
02.06.2015
Размер:
2.13 Кб
Скачать
#include <iostream>
using namespace std;

//класса CVector2D 
class CVector2D 
{ 
private:
	double x, y; 
public: 
	CVector2D(double x0 = 0, double y0 = 0) :x(x0), y(y0) { } 
	void show()
	{
		cout<< "vector="<< x<<" , "<<y<<endl;
	}
	//Реализация оператора сложения внутри класса CVector2D
	// левым аргументом является текущий экземпляр класса // правым – единственный аргумент vector2
	/*CVector2D const operator +(CVector2D const& vector2)const 
	{
		 return CVector2D(x + vector2.x, y + vector2.y); 
	}*/
		//Реализация оператора произведения вектора и скаляра 
	// левым аргументом является текущий экземпляр класса // правым – единственный аргумент vector2
	CVector2D const operator *(double scalar)const //c=a*100;
	{
		 return CVector2D(x * scalar, y * scalar); 
	}
	 friend CVector2D const operator +(CVector2D const& vector1, CVector2D const& vector2);
	 friend CVector2D const operator -(CVector2D const& vector1, CVector2D const& vector2);
	 friend CVector2D const operator *(double scalar, CVector2D const& vector);
	 };

//Реализация оператора сложения вне класса CVector2D  Проблемма - доступ к закрытым переменным X,Y невозможна, делаем ф-ю friend
CVector2D const operator +(CVector2D const& vector1, CVector2D const& vector2) 
{ 
	return CVector2D(vector1.x + vector2.x, vector1.y + vector2.y); 
}

CVector2D const operator -(CVector2D const& vector1, CVector2D const& vector2) 
{ 
	return CVector2D(vector1.x - vector2.x, vector1.y - vector2.y); 
}
//Реализация оператора произведения скаляра на вектор. Проблемма - доступ к закрытым переменным X,Y невозможна, делаем ф-ю friend // А как еще можно реализовать данный оператор? }
CVector2D const operator *(double scalar, CVector2D const& vector) //d=100*a;
	{ 
		return CVector2D(scalar * vector.x, scalar *vector.y);
	}

int main()
{
	CVector2D a(1.0,2.0);
	CVector2D b(3.0,4.0);
	CVector2D c=a+b;
	//или
	CVector2D d=a+b+CVector2D(10,20);
	c.show();
	d.show();
	c=a*100;
	c.show();
	d=100*a;
	d.show();

//
	CVector2D e = (a + b) * 3 + (c - d) * 4;//  vector =12,18
	e.show();
	return 0;
}
Соседние файлы в папке 12пми