实现一个二维矢量类,并重载加减号,乘号,使之实现向量的加减与数乘,点乘功能。重载<<运算符,使之可以被cout打印输出。
时间: 2024-09-28 16:10:53 浏览: 33
24dianj.rar_24点计算_数字加减24_计算24点
在C++中,你可以创建一个名为`Vector2D`的类,用于表示二维矢量,并通过重载运算符实现所需的功能。以下是这个类的一个简单实现:
```cpp
#include <iostream>
using namespace std;
class Vector2D {
private:
double x;
double y;
public:
// 构造函数
Vector2D(double x = 0, double y = 0) : x(x), y(y) {}
// 加法运算符重载
Vector2D operator+(const Vector2D& other) const {
return Vector2D(x + other.x, y + other.y);
}
// 减法运算符重载
Vector2D operator-(const Vector2D& other) const {
return Vector2D(x - other.x, y - other.y);
}
// 数字乘法运算符重载
Vector2D operator*(double scalar) const {
return Vector2D(x * scalar, y * scalar);
}
// 点积运算符重载
double dotProduct(const Vector2D& other) const {
return x * other.x + y * other.y;
}
// 输出运算符重载
friend ostream& operator<<(ostream& out, const Vector2D& vec) {
out << "(" << vec.x << ", " << vec.y << ")";
return out;
}
};
// 示例
int main() {
Vector2D v1(3, 4);
Vector2D v2(1, 2);
cout << "v1: " << v1 << endl;
cout << "v1 + v2: " << v1 + v2 << endl;
cout << "v1 - v2: " << v1 - v2 << endl;
cout << "v1 * 2: " << v1 * 2 << endl;
cout << "dot product of v1 and v2: " << v1.dotProduct(v2) << endl;
return 0;
}
```
在这个例子中,我们实现了向量的加法、减法、标量乘法以及点积操作,同时重载了`<<`运算符以便于输出。在`main`函数中展示了如何使用这些操作。
阅读全文