使用C++编写程序定义向量类 Vector,重载运算符+、-、*和=,实现向量之间的加、减、乘、赋值运算;重载 运算符>>、<<实现向量的输入、输出功能。注意检测运算的合法性。
时间: 2024-05-05 21:20:15 浏览: 129
由于题目中没有明确说明向量的维度,因此我们假设向量的维度为3,向量类的定义如下:
```c
#include <iostream>
class Vector {
private:
double x, y, z;
public:
Vector(double x = 0, double y = 0, double z = 0) : x(x), y(y), z(z) {}
Vector operator+(const Vector& v) const {
return Vector(x + v.x, y + v.y, z + v.z);
}
Vector operator-(const Vector& v) const {
return Vector(x - v.x, y - v.y, z - v.z);
}
Vector operator*(const double d) const {
return Vector(x * d, y * d, z * d);
}
Vector& operator=(const Vector& v) {
x = v.x;
y = v.y;
z = v.z;
return *this;
}
friend std::istream& operator>>(std::istream& is, Vector& v) {
is >> v.x >> v.y >> v.z;
return is;
}
friend std::ostream& operator<<(std::ostream& os, const Vector& v) {
os << "(" << v.x << ", " << v.y << ", " << v.z << ")";
return os;
}
};
```
在这个类中,我们定义了向量的构造函数,加、减、乘、赋值运算符以及输入、输出运算符。
在加、减、乘运算符中,我们使用了向量的加法、减法、数乘运算的定义。
在赋值运算符中,我们将一个向量的坐标值赋值给另一个向量。
在输入、输出运算符中,我们使用了C++标准库中的输入输出流(iostream)。
下面是一个使用向量类的例子:
```c
int main() {
Vector v1, v2;
std::cout << "请输入向量v1的坐标:" << std::endl;
std::cin >> v1;
std::cout << "请输入向量v2的坐标:" << std::endl;
std::cin >> v2;
Vector v3 = v1 + v2;
Vector v4 = v1 - v2;
Vector v5 = v1 * 2.0;
Vector v6 = v1;
std::cout << "v1 + v2 = " << v3 << std::endl;
std::cout << "v1 - v2 = " << v4 << std::endl;
std::cout << "v1 * 2 = " << v5 << std::endl;
std::cout << "v6 = " << v6 << std::endl;
return 0;
}
```
在这个例子中,我们先定义了两个向量v1和v2,并通过输入运算符从标准输入流中读入它们的坐标值。然后,我们分别计算了v1和v2的和、差、数乘以及将v1赋值给v6,并通过输出运算符将其输出到标准输出流中。
阅读全文