【描述】 声明和实现一个向量类MyVector,包括一个点的坐标位置x、y和z,实现其构造函数和三个友元函数,完成两个向量的加法、减法、点乘与叉乘运算。 【输入】 输入一个点的坐标位置x、y和z。 【输出】 见【输出示例】 【输入示例】 3 4 5
时间: 2024-12-14 15:20:42 浏览: 9
【描述】
为了创建一个名为`MyVector`的向量类,用于表示三维空间中的点,并支持基本的向量操作,我们需要定义类成员变量`x`, `y`, 和 `z` 存储坐标,以及相应的构造函数初始化这些值。同时,我们将为这个类声明三个友元函数,以便在类外部可以直接访问并操作这些向量的属性和进行加法、减法、点乘(内积)和叉乘(外积)运算。
```cpp
class MyVector {
public:
// 构造函数,接收三个参数
MyVector(double x = 0, double y = 0, double z = 0) : x(x), y(y), z(z) {}
// 友元函数 - 加法
friend MyVector operator+(const MyVector& v1, const MyVector& v2);
// 友元函数 - 减法
friend MyVector operator-(const MyVector& v1, const MyVector& v2);
// 友元函数 - 点乘(内积)
friend double dotProduct(const MyVector& v1, const MyVector& v2);
// 友元函数 - 叉乘(外积)
friend MyVector crossProduct(const MyVector& v1, const MyVector& v2);
private:
double x;
double y;
double z;
};
// 输出示例:
// MyVector vec1(3, 4, 5); // 创建一个点 (3, 4, 5)
// MyVector vec2(1, 2, 3); // 创建另一个点 (1, 2, 3)
// 加法示例
MyVector sum = vec1 + vec2;
// 减法示例
MyVector difference = vec1 - vec2;
// 点乘示例
double innerProduct = dotProduct(vec1, vec2);
// 叉乘示例
MyVector crossResult = crossProduct(vec1, vec2);
```
阅读全文