每个二维向量可通过二维坐标(x,y)表示,二维向量可执行加减等运算。设计一个二维向量类(每个二维向量可用x,y坐标表示),并测试类的功能。类的基本结构如下: class Vector2d { public: // 构造函数 //自己扩充类的功能 private: double x,y; //向量坐标 }; 二维向量类的其它部分自己设计,但至少要包括四个重载运算符函数,即“+”,“-”“<<”,“>>”,使之能用于二维向量的加减和二维向量的输入输出。其中“+”运算符重载函数和“-”运算符重载函数分别设计为成员函数和友元函数。
时间: 2024-03-19 08:43:14 浏览: 70
好的,以下是一个简单的二维向量类的实现示例:
```c++
#include <iostream>
using namespace std;
class Vector2d {
public:
Vector2d(double x = 0.0, double y = 0.0) : x(x), y(y) {} // 构造函数
// 友元函数,实现二维向量的加法
friend Vector2d operator+(const Vector2d& v1, const Vector2d& v2) {
return Vector2d(v1.x + v2.x, v1.y + v2.y);
}
// 成员函数,实现二维向量的减法
Vector2d operator-(const Vector2d& v) const {
return Vector2d(x - v.x, y - v.y);
}
// 友元函数,实现二维向量的输出
friend ostream& operator<<(ostream& os, const Vector2d& v) {
os << "(" << v.x << ", " << v.y << ")";
return os;
}
// 友元函数,实现二维向量的输入
friend istream& operator>>(istream& is, Vector2d& v) {
is >> v.x >> v.y;
return is;
}
private:
double x, y; // 向量坐标
};
int main() {
Vector2d v1(1.0, 2.0), v2(3.0, 4.0);
cout << "v1 + v2 = " << v1 + v2 << endl; // 输出 (4, 6)
cout << "v1 - v2 = " << v1 - v2 << endl; // 输出 (-2, -2)
Vector2d v3;
cout << "请输入一个二维向量:";
cin >> v3;
cout << "你输入的向量是:" << v3 << endl;
return 0;
}
```
在这个示例中,我们定义了一个 `Vector2d` 类,包含了两个私有成员变量 `x` 和 `y`,表示二维向量的坐标。类中的四个重载运算符函数分别实现了二维向量的加减和输入输出。其中,加法运算符重载函数为友元函数,减法运算符重载函数为成员函数。通过重载输入输出运算符,我们可以方便地对二维向量进行输入输出。
在 `main` 函数中,我们创建了两个二维向量 `v1` 和 `v2`,并对其进行加减运算,然后通过重载的输出运算符将结果输出。接着,我们通过重载的输入运算符从标准输入中读取一个二维向量,并将其输出。
阅读全文
相关推荐















