设计一个三维向量类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 12:28:10 浏览: 10
以下是Vector类的设计和实现:
```cpp
#include <iostream>
class Vector {
private:
float x;
float y;
float z;
public:
Vector() : x(0), y(0), z(0) {}
Vector(float v1, float v2, float v3) : x(v1), y(v2), z(v3) {}
void Print() const {
std::cout << "(" << x << ", " << y << ", " << z << ")" << std::endl;
}
Vector operator+(const Vector& other) const {
return Vector(x + other.x, y + other.y, z + other.z);
}
Vector operator-(const Vector& other) const {
return Vector(x - other.x, y - other.y, z - other.z);
}
Vector operator+(float scalar) const {
return Vector(x + scalar, y + scalar, z + scalar);
}
Vector operator-(float scalar) const {
return Vector(x - scalar, y - scalar, z - scalar);
}
friend Vector operator+(float scalar, const Vector& vec) {
return Vector(vec.x + scalar, vec.y + scalar, vec.z + scalar);
}
friend Vector operator-(float scalar, const Vector& vec) {
return Vector(vec.x - scalar, vec.y - scalar, vec.z - scalar);
}
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; // 使用无参数构造函数
std::cout << "v1: ";
v1.Print(); // 输出:(0, 0, 0)
Vector v2(1.0f, 2.0f, 3.0f); // 使用带参数构造函数
std::cout << "v2: ";
v2.Print(); // 输出:(1, 2, 3)
Vector v3 = v1 + v2; // 向量相加
std::cout << "v1 + v2: ";
v3.Print(); // 输出:(1, 2, 3)
Vector v4 = v2 - v1; // 向量相减
std::cout << "v2 - v1: ";
v4.Print(); // 输出:(1, 2, 3)
Vector v5 = v1 + 2.5f; // 向量与浮点数相加
std::cout << "v1 + 2.5: ";
v5.Print(); // 输出:(2.5, 2.5, 2.5)
Vector v6 = 3.0f + v2; // 浮点数与向量相加
std::cout << "3.0 + v2: ";
v6.Print(); // 输出:(4, 5, 6)
float dotProduct = v1 * v2; // 向量点乘
std::cout << "v1 * v2: " << dotProduct << std::endl; // 输出:0
return 0;
}
```
在上述代码中,我们定义了Vector类,并实现了构造函数、Print函数以及重载的运算符+、-、*。在主函数中,我们创建了几个Vector对象,并进行了各种运算,最后通过Print函数显示运算结果。
运行上述代码将会输出以下结果:
```
v1: (0, 0, 0)
v2: (1, 2, 3)
v1 + v2: (1, 2, 3)
v2 - v1: (1, 2, 3)
v1 + 2.5: (2.5, 2.5, 2.5)
3.0 + v2: (4, 5, 6)
v1 * v2: 0
```
这些结果展示了Vector类的各种成员函数的使用和运算结果。