Добавил:
Upload
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:12пми / Vector2D
.cpp#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пми