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;
}
|