1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
struct Vector2
{
float x, y;
Vector2(float x, float y) : x(x), y(y) {}
// 加法
Vector2 operator+(const Vector2& other) const
{
return Vector2(x + other.x, y + other.y);
}
// 减法
Vector2 operator-(const Vector2& other) const
{
return Vector2(x - other.x, y - other.y);
}
// 乘法(标量)
Vector2 operator*(float scalar) const
{
return Vector2(x * scalar, y * scalar);
}
// 除法(标量)
Vector2 operator/(float scalar) const
{
return Vector2(x / scalar, y / scalar);
}
// 负号
Vector2 operator-() const
{
return Vector2(-x, -y);
}
};
// 标量乘法(左操作数是标量)
Vector2 operator*(float scalar, const Vector2& vector)
{
return vector * scalar;
}
int main()
{
Vector2 v1(2.0f, 3.0f);
Vector2 v2(1.0f, 1.0f);
Vector2 sum = v1 + v2; // (3, 4)
Vector2 diff = v1 - v2; // (1, 2)
Vector2 scaled = v1 * 2.0f; // (4, 6)
Vector2 scaled2 = 2.0f * v1; // (4, 6)
Vector2 divided = v1 / 2.0f; // (1, 1.5)
Vector2 negated = -v1; // (-2, -3)
}
|