C++学習ノート:ベクトルクラスの加減算演算を実現し、演算子を再ロードする

15283 ワード

ストリーム演算子と減算演算子の再ロードをレビューします.付与演算子の再ロードを重点的に把握します.void operator=(const Vector&v);
#include 

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;
}