4.设计一个三维向量类Vector。该类包含有三个float类型的数据成员x、y、z,用于表示向量的三维;该类还包含一些函数成员,具体如下: 1)Vector类包含两个构造函数。第一个为无参数构造函数,该函数能将向量的三个数据成员均初始化为0;第二个构造函数带有三个float型的数据成员(v1、v2、v3),其值分别用于初始化x、y、z; 2)Vector类包含有一个成员函数Print,用于显示该向量; 3)Vector类中重载运算符+和-,完成两个向量的相加和相减运算,以成员函数的方式重载; 4)Vector类中重载运算符+和-,完成向量与浮点数的相加和相减运算,以友元函数的方式重载; 5)Vector类中重载运算符*,完成向量的点乘运算,以友元函数的形式重载; 在main函数中编写测试代码,测试这几个成员函数,通过Print函数显示运算结果。
时间: 2024-04-13 19:31:06 浏览: 349
以下是实现上述要求的Vector类的示例代码:
```cpp
#include <iostream>
using namespace std;
class Vector {
private:
float x, y, z;
public:
Vector() : x(0), y(0), z(0) {} // 无参数构造函数
Vector(float v1, float v2, float v3) : x(v1), y(v2), z(v3) {} // 带参数构造函数
void Print() {
cout << "(" << x << ", " << y << ", " << z << ")" << endl;
}
Vector operator+(const Vector& other) {
Vector result;
result.x = this->x + other.x;
result.y = this->y + other.y;
result.z = this->z + other.z;
return result;
}
Vector operator-(const Vector& other) {
Vector result;
result.x = this->x - other.x;
result.y = this->y - other.y;
result.z = this->z - other.z;
return result;
}
friend Vector operator+(const Vector& vec, float scalar) {
Vector result;
result.x = vec.x + scalar;
result.y = vec.y + scalar;
result.z = vec.z + scalar;
return result;
}
friend Vector operator-(const Vector& vec, float scalar) {
Vector result;
result.x = vec.x - scalar;
result.y = vec.y - scalar;
result.z = vec.z - scalar;
return result;
}
friend float operator*(const Vector& vec1, const Vector& vec2) {
return vec1.x * vec2.x + vec1.y * vec2.y + vec1.z * vec2.z;
}
};
int main() {
Vector v1; // 使用无参数构造函数创建向量
v1.Print(); // 输出 (0, 0, 0)
Vector v2(1.0f, 2.0f, 3.0f); // 使用带参数构造函数创建向量
v2.Print(); // 输出 (1, 2, 3)
Vector v3 = v1 + v2; // 向量相加
v3.Print(); // 输出 (1, 2, 3)
Vector v4 = v2 - v1; // 向量相减
v4.Print(); // 输出 (1, 2, 3)
Vector v5 = v1 + 2.0f; // 向量与浮点数相加
v5.Print(); // 输出 (2, 2, 2)
Vector v6 = v2 - 1.0f; // 向量与浮点数相减
v6.Print(); // 输出 (0, 1, 2)
float dotProduct = v1 * v2; // 向量点乘
cout << "Dot Product: " << dotProduct << endl; // 输出 Dot Product: 0
return 0;
}
```
该示例代码定义了一个Vector类,包含了所需的构造函数、Print函数和重载的运算符。在主函数中进行了一系列测试,验证了Vector类的功能。
阅读全文
相关推荐


















