Задание на языке С++:
1. Создать класс Vektor.
В закрытых полях private указываются значения трех координат вектора. В открытых полях public создаются конструктор по умолчанию, конструктор c тремя параметрами (по числу размерности вектора) и деструктор по умолчанию.
2. Написать перегрузку оператора <<.
Данный метод должен обеспечивать печать координат вектора в следующем виде (…;…;…).
3. Перегрузка операторов + и -.
Сложение и вычитание векторов
4. Перегрузка оператора * в случае взаимодействия объекта класса и числа.
Результатом перегрузки является новый объект класса.
5. Перегрузка оператора * в случае взаимодействия числа и объекта класса.
Результатом перегрузки является новый объект класса.
Ответы
#include <iostream>
class Vector
{
private:
int16_t
x,
y,
z;
public:
Vector() = default;
explicit Vector(const int16_t &x = 0, const int16_t& y = 0, const int16_t& z = 0) : x(x), y(y), z(z) {}
~Vector() = default;
Vector operator +(const Vector& vector)
{
return Vector(this->x + vector.x, this->y + vector.y, this->z + vector.z);
}
Vector operator -(const Vector& vector)
{
return Vector(this->x - vector.x, this->y - vector.y, this->z - vector.z);
}
Vector operator *(const int16_t &_value) const
{
return Vector(this->x * _value,\
this->y * _value,\
this->z * _value);
}
friend Vector operator*(const int16_t&, const Vector&);
friend std::ostream &operator<<(std::ostream&, const Vector&);
};
std::ostream &operator<<(std::ostream &_buffer, const Vector &_vector)
{
_buffer << _vector.x << ";" << _vector.y << ";" << _vector.z;
return _buffer;
}
Vector operator*(const int16_t& _value, const Vector& _vector)
{
return _vector.operator*(_value);
}
int main()
{
Vector v(1, 2, 3);
Vector c = 5 * v;
std::cout << v << std::endl
<< c << std::endl
<< v + c << std::endl
<< v - c << std::endl;
return 0;
}