函数题:减、相等和输入输出的运算符重载(2维向量Vec2)
本题要求定义一个二维向量类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:若无答案欢迎评论
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:若无答案欢迎评论