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 12:30:30 浏览: 248
好的,以下是设计的Vector类的代码示例:
```cpp
#include <iostream>
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() {
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);
}
friend Vector operator+(const Vector& vec, float scalar) {
return Vector(vec.x + scalar, vec.y + scalar, vec.z + scalar);
}
friend Vector operator-(const Vector& vec, float scalar) {
return Vector(vec.x - scalar, vec.y - scalar, vec.z - scalar);
}
friend Vector operator*(const Vector& vec1, const Vector& vec2) {
return Vector(vec1.x * vec2.x, vec1.y * vec2.y, vec1.z * vec2.z);
}
};
int main() {
Vector vec1; // 默认构造函数
std::cout << "vec1: ";
vec1.Print();
Vector vec2(1.5, 2.5, 3.5); // 带参数构造函数
std::cout << "vec2: ";
vec2.Print();
Vector vec3 = vec1 + vec2; // 向量相加
std::cout << "vec1 + vec2: ";
vec3.Print();
Vector vec4 = vec2 - vec1; // 向量相减
std::cout << "vec2 - vec1: ";
vec4.Print();
Vector vec5 = vec1 + 2.0; // 向量与浮点数相加
std::cout << "vec1 + 2.0: ";
vec5.Print();
Vector vec6 = vec2 - 1.0; // 向量与浮点数相减
std::cout << "vec2 - 1.0: ";
vec6.Print();
Vector vec7 = vec1 * vec2; // 向量点乘
std::cout << "vec1 * vec2: ";
vec7.Print();
return 0;
}
```
这段代码定义了一个Vector类,包含了所需的构造函数和成员函数,并重载了`+`、`-`和`*`运算符。在`main`函数中,我们创建了几个向量对象,并测试了各个成员函数的功能。运行程序后,将输出运算结果。
请注意,上述代码只是一个示例,只实现了基本的功能。在实际应用中,可能还需要考虑其他操作和异常处理等情况。
阅读全文