实验2. 设计三维向量类】设计一个三维向量类,并实现向量的加法、减法以及向量与标量的乘法 和除法运算
时间: 2024-11-27 13:18:17 浏览: 19
c++实现任意维数向量类的操作.7z
在设计三维向量类时,通常会包含三个私有成员变量,分别表示x、y和z轴的分量。这样的类可以按照面向对象原则来组织,包括封装属性和提供公共的方法来进行操作。以下是基本的设计结构:
```cpp
class Vector3D {
private:
double x;
double y;
double z;
public:
// 构造函数,初始化向量
Vector3D(double x = 0, double y = 0, double z = 0) : x(x), y(y), z(z) {}
// 加法运算
Vector3D operator+(const Vector3D& other) const {
return Vector3D(x + other.x, y + other.y, z + other.z);
}
// 减法运算
Vector3D operator-(const Vector3D& other) const {
return Vector3D(x - other.x, y - other.y, z - other.z);
}
// 与标量的乘法运算
Vector3D operator*(double scalar) const {
return Vector3D(x * scalar, y * scalar, z * scalar);
}
// 与标量的除法运算(除数非零时)
Vector3D operator/(double scalar) const {
if (scalar != 0) {
return Vector3D(x / scalar, y / scalar, z / scalar);
}
throw std::invalid_argument("Cannot divide by zero");
}
// 其他实用的方法,如获取向量长度(模),设置向量等
double magnitude() const { return sqrt(x*x + y*y + z*z); }
void normalize() { *this /= magnitude(); } // 长度归一化
// 为了方便打印,提供友元函数
friend std::ostream& operator<<(std::ostream& os, const Vector3D& v);
};
```
阅读全文