设计一个三维向量类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 22:28:09 浏览: 119
这是一个示例实现:
```cpp
#include <iostream>
class Vector {
private:
float x;
float y;
float z;
public:
Vector() {
x = 0.0f;
y = 0.0f;
z = 0.0f;
}
Vector(float v1, float v2, float v3) {
x = v1;
y = v2;
z = v3;
}
void Print() {
std::cout << "(" << x << ", " << y << ", " << z << ")" << std::endl;
}
Vector operator+(const Vector& other) const {
Vector result;
result.x = x + other.x;
result.y = y + other.y;
result.z = z + other.z;
return result;
}
Vector operator-(const Vector& other) const {
Vector result;
result.x = x - other.x;
result.y = y - other.y;
result.z = z - other.z;
return result;
}
friend Vector operator+(const Vector& vector, float scalar) {
Vector result;
result.x = vector.x + scalar;
result.y = vector.y + scalar;
result.z = vector.z + scalar;
return result;
}
friend Vector operator-(const Vector& vector, float scalar) {
Vector result;
result.x = vector.x - scalar;
result.y = vector.y - scalar;
result.z = vector.z - scalar;
return result;
}
friend float operator*(const Vector& vector1, const Vector& vector2) {
float dotProduct = vector1.x * vector2.x + vector1.y * vector2.y + vector1.z * vector2.z;
return dotProduct;
}
};
int main() {
Vector v1; // 使用默认构造函数创建向量,x、y、z都会被初始化为0
Vector v2(1.0f, 2.0f, 3.0f); // 使用带参数的构造函数创建向量
v1.Print(); // 输出:(0, 0, 0)
v2.Print(); // 输出:(1, 2, 3)
Vector sum = v1 + v2;
Vector difference = v1 - v2;
Vector sumScalar = v1 + 5.0f;
Vector differenceScalar = v1 - 5.0f;
float dotProduct = v1 * v2;
sum.Print(); // 输出:(1, 2, 3)
difference.Print(); // 输出:(-1, -2, -3)
sumScalar.Print(); // 输出:(5, 5, 5)
differenceScalar.Print(); // 输出:(-5, -5, -5)
std::cout << "Dot Product: " << dotProduct << std::endl; // 输出:14
return 0;
}
```
这个Vector类包含了两个构造函数,一个无参数构造函数和一个带参数的构造函数。它还包含了Print函数用于显示向量的值。
运算符`+`和`-`被重载为成员函数,用于向量的相加和相减运算。运算符`+`和`-`还被重载为友元函数,用于向量与浮点数的相加和相减运算。
运算符`*`被重载为友元函数,用于向量的点乘运算。
在main函数中,我们创建了两个Vector对象v1和v2,并进行了各种运算,最后通过Print函数显示运算结果。
阅读全文