C++学习笔记:实现向量类的加减赋值运算,重载运算符

回顾流运算符和加减运算符的重载。
重点掌握赋值运算符的重载。
void operator=(const Vector&v);

#include <iostream>

using namespace std;
/*
*作者:youshen_wwd
*时间:2020/5/14
*题目:设向量X=(x1,x2,…,xn)和Y=(y1,y2…,yn),它们之间的加、减分别定义为:
  X+Y=(x1+y1, x2+y2,…, xn+yn)
  X-Y=(x1-y1, x2-y2,…, xn-yn)
编程序定义向量类Vector ,重载运算符”+”、”-“、”=”,实现向量之间的加、减和赋值运算;
用重载运算符”>>”、”<<”做向量的输入/输出操作。注意检测运算的合法性。
*/
class Vector{//这里仅实现两个三维向量之间的计算
private:
    int *Array;
    int num;//维度
public:
    Vector(int n){//初始化
        num=n;
        Array=new int [num];
        for (int i=0;i<num;i++)
        Array[i]=0;
        }
    friend istream &operator>>(istream &input,Vector &v);
    friend ostream &operator<<(ostream &output,Vector &v);
    friend Vector operator+(Vector &v1,Vector &v2);

    friend Vector operator- (Vector &v1,Vector &v2);
    void operator=(const Vector &v2);
};
void Vector::operator=(const Vector &v2){
   //=必须作为成员函数重载
       num=v2.num;
       Array= new int [num];
       for (int i=0;i<num;i++){
        Array[i]=v2.Array[i];

       }
}
Vector operator+(Vector &v1,Vector &v2){
//对+进行重载,这里考虑的是两个维度相等的向量
int n=v1.num;
Vector v(n);
for (int i=0;i<n;i++){

    v.Array[i]=v1.Array[i]+v2.Array[i];
}
return v;
}

Vector operator- (Vector &v1,Vector &v2){
//对-进行重载,这里考虑的是两个维度相等的向量
int n=v1.num;
Vector v(n);
for (int i=0;i<n;i++){

    v.Array[i]=v1.Array[i]-v2.Array[i];
}
return v;
}



istream &operator>>(istream &input,Vector &v){
//对运算符>>的重载
cout<<"这是一个"<<v.num<<"维的向量"<<endl;
for (int i=0;i<v.num;i++){
    cin>>v.Array[i];}
return input;

}

ostream &operator<<(ostream &output,Vector &v){
//对运算符<<重载
for (int i=0;i<v.num;i++){
    cout<<v.Array[i]<<" ";}
return output;

}
int main(){
Vector v1(3),v2(3),v3(3);
cout<<"input v1 please:"<<endl;
cin>>v1;
cout<<"input v2 please:"<<endl;
cin>>v2;
v3=v1+v2;
cout<<"v1+v2="<<v3<<endl;
v3=v1-v2;
cout<<"v1-v2="<<v3<<endl;
v3=v2;
cout<<v3;
}



  • 13
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值