每个二维向量可通过二维坐标( x , y )表示,二维向量可执行加减等运算。设计一个二维向量类(每个二维向量可用 x , y 坐标表示),并测试类的功能。类的基本结构如下: class Vector2d public ://构造函数 //自己扩充类的功能 private : double x , y ;//向量坐标 二维向量类的其它部分自己设计,但至少要包括四个重载运算符函数,即"+","-""<<",">>",使之能用于二维向量的加减和二维向量的输入输出。其中"+"运算符重载函数和"-"运算符重载函数分别设计为成员函数和友元函数。
时间: 2024-03-24 18:38:52 浏览: 103
二维向量运算
好的,我理解了你的问题。以下是一个实现了基本功能的二维向量类:
```c++
#include <iostream>
using namespace std;
class Vector2d
{
public:
Vector2d() : x(0), y(0) {} //默认构造函数
Vector2d(double x_, double y_) : x(x_), y(y_) {} //构造函数
Vector2d operator+(const Vector2d& vec) const; //重载加法运算符
Vector2d operator-(const Vector2d& vec) const; //重载减法运算符
friend ostream& operator<<(ostream& out, const Vector2d& vec); //重载输出运算符
friend istream& operator>>(istream& in, Vector2d& vec); //重载输入运算符
private:
double x, y;
};
Vector2d Vector2d::operator+(const Vector2d& vec) const
{
return Vector2d(x + vec.x, y + vec.y);
}
Vector2d Vector2d::operator-(const Vector2d& vec) const
{
return Vector2d(x - vec.x, y - vec.y);
}
ostream& operator<<(ostream& out, const Vector2d& vec)
{
out << "(" << vec.x << ", " << vec.y << ")";
return out;
}
istream& operator>>(istream& in, Vector2d& vec)
{
in >> vec.x >> vec.y;
return in;
}
int main()
{
Vector2d v1(1, 2), v2(3, 4), v3;
v3 = v1 + v2;
cout << v3 << endl; //输出 (4, 6)
v3 = v1 - v2;
cout << v3 << endl; //输出 (-2, -2)
cin >> v3;
cout << v3 << endl; //输入 (x, y),并输出
return 0;
}
```
在上述代码中,我们定义了一个 `Vector2d` 类,其中包括两个私有成员变量 `x` 和 `y`,表示二维向量的坐标。我们使用了默认构造函数和带参构造函数来创建对象。
我们还重载了 `+` 和 `-` 运算符,分别作为成员函数和友元函数,用于实现向量的加法和减法。同时,我们还重载了 `<<` 和 `>>` 运算符,分别用于向量的输出和输入。
在 `main` 函数中,我们创建了两个向量 `v1` 和 `v2`,并使用重载后的 `+` 和 `-` 运算符求出它们的和和差。我们还使用 `cin` 从控制台输入一个向量,并使用重载后的 `<<` 运算符输出该向量。
希望这个例子对你有所帮助!
阅读全文