Код для удобных операций над векторами

Python 3C++
import math

class Vector:
    def __init__(self, x, y):
        self.x = x
        self.y = y

    def __neg__(self):
        return Vector(-self.x, -self.y)

    def __add__(self, other):
        return Vector(self.x + other.x, self.y + other.y)

    def __sub__(self, other):
        return Vector(self.x - other.x, self.y - other.y)

    def __mul__(self, k):
        return Vector(k * self.x, k * self.y)

    def __rmul__(self, k):
        return Vector(k * self.x, k * self.y)

# Вызывается __init__(u, 1, 2)
u = Vector(1, 2)
# Вызывается __init__(v, 3, 4)
v = Vector(3, 4)

# Вызывается __add__(u, v)
s = u + v
print(s.x, s.y) # 4 6

# Вызывается __sub__(u, v)
s = u - v
print(s.x, s.y) # -2 -2

# Вызывается __neg__(v)
s = -v
print(s.x, s.y) # -3 -4

# Вызывается __mul__(v, 3)
s = v * 3
print(s.x, s.y) # 9 12

# Вызывается __rmul__(v, 3)
s = 3 * v
print(s.x, s.y) # 9 12
        
#include <iostream>

struct Vector {
  double x, y;

  Vector(double x_arg = 0, double y_arg = 0) {
    x = x_arg;
    y = y_arg;
  }
};

Vector operator -(const Vector &u) {
  return Vector(-u.x, -u.y);
}

Vector operator +(const Vector &u, const Vector &v) {
  return Vector(u.x + v.x, u.y + v.y);
}

Vector operator -(const Vector &u, const Vector &v) {
  return Vector(u.x - v.x, u.y - v.y);
}

Vector operator *(const Vector &u, double k) {
  return Vector(k * u.x, k * u.y);
}

Vector operator *(double k, const Vector &u) {
  return Vector(k * u.x, k * u.y);
}

int main() {
  Vector u(1, 2);
  Vector v(3, 4);

  Vector s;

  // Вызывается operator +(u, v)
  s = u + v;
  std::cout << s.x << ' ' << s.y << std::endl; // 4 6

  // Вызывается operator -(u, v)
  s = u - v;
  std::cout << s.x << ' ' << s.y << std::endl; // -2 -2

  // Вызывается operator -(v)
  s = -v;
  std::cout << s.x << ' ' << s.y << std::endl; // -3 -4

  // Вызывается operator *(v, 3)
  s = v * 3;
  std::cout << s.x << ' ' << s.y << std::endl; // 9 12

  // Вызывается operator *(3, v)
  s = 3 * v;
  std::cout << s.x << ' ' << s.y << std::endl; // 9 12

  return 0;
}