-->
当前位置:首页 > Eng > 正文内容

函数题:减、相等和输入输出的运算符重载(2维向量Vec2)

Luz2年前 (2022-11-19)Eng820
本题要求定义一个二维向量类Vec2,类的声明见给出的代码,请给出类的完整实现,并通过测试程序。类的声明包括如下内容:
1. 数据成员,向量的第一维u和第二维v;
2. u和v的访问函数;
3. 构造函数;
4. 加号、减号运算符重载(遵守二维向量的运算规则);
5. ==和!=运算符重载(遵守二维向量的运算规则)
6. 输入、输出运算符重载。

**类实现代码需要补充构造函数以及减、相等、输入输出运算。**

### 类的声明:
c++
class Vec2{
private:
double u;
double v;
public:
Vec(double u=0,double v=0);
double getU() const;
double getV() const;
Vec2 operator+(const Vec2&b);
friend Vec2 operator-(const Vec2&a,const Vec2&b);
bool operator==(const Vec2&b) const;
friend bool operator!=(const Vec2&a,const Vec2&b);
friend ostream&operator<<(ostream&os,const Vec2&c);
friend istream&operator>>(istream&is,Vec2&c);
};



### 测试程序:
c++
#include<iostream>
using namespace std;
class Vec2{
private:
double u;
double v;
public:
Vec2(double u=0,double v=0);
double getU() const;
double getV() const;
Vec2 operator+(const Vec2&b);
friend Vec2 operator-(const Vec2&a,const Vec2&b);
bool operator==(const Vec2&b) const;
friend bool operator!=(const Vec2&a,const Vec2&b);
friend ostream&operator<<(ostream&os,const Vec2&c);
friend istream&operator>>(istream&is,Vec2&c);
};
double Vec2::getU() const
{
return u;
}
double Vec2::getV() const
{
return v;
}
Vec2 Vec2::operator+(const Vec2&b){
return Vec2(u+b.u,v+b.v);
}
bool operator!=(const Vec2&a,const Vec2&b)
{
return a.u!=b.u || a.v!=b.v;
}
/* 请在这里填写答案 */

int main(){
Vec2 a;
cin>>a;
cout<<"a="<<a<<endl;
Vec2 b(3,4);
Vec2 c=a+b;
cout<<"c="<<c<<endl;
Vec2 d=a-b;
cout<<"d="<<d<<endl;
cout<<"a==a is "<<(a==a)<<endl;
cout<<"a!=a is "<<(a!=a)<<endl;
return 0;
}

### 测试程序的输入:

in
10 5


### 测试程序的输出:

out
a=(10,5)
c=(13,9)
d=(7,1)
a==a is 1
a!=a is 0

**注意:**“=”、“,”、“(”和“)”为英文
### 提示
下列代码为类实现的骨架代码
c++
Vec2::Vec2(double u,double v){
//代码
}
Vec2 operator-(const Vec2&a,const Vec2&b){
//代码
}
bool Vec2::operator==(const Vec2&b) const{
//代码
}
ostream&operator<<(ostream&os,const Vec2&c){
//代码
}
istream&operator>>(istream&is,Vec2&c){
//代码
}










answer:若无答案欢迎评论

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。