C++ 多态,继承的问题,求大神回答

2025-03-12 15:30:40
推荐回答(1个)
回答1:

#include
#include
using namespace std;
class vector_2{
protected:
    double x,y;
public:
    vector_2(){}
    vector_2(double xx,double yy){
        x=xx;
        y=yy;
    }
    vector_2 operator+(vector_2 &v){
        return vector_2(x+v.x,y+v.y);
    }
    vector_2 operator-(vector_2 &v){
        return vector_2(x-v.x,y-v.y);
    }
    virtual double norm(){
        return sqrt(x*x+y*y);
    }
    virtual void display(){
        cout<<'('<    }
};
class vector_3:public vector_2{
protected:
    double z;
public:
    vector_3(){}
    vector_3(double xx,double yy,double zz):vector_2(xx,yy){
        z=zz;
    }
    vector_3 operator+(vector_3 &v){
        return vector_3(x+v.x,y+v.y,z+v.z);
    }
    vector_3 operator-(vector_3 &v){
        return vector_3(x-v.x,y-v.y,z-v.z);
    }
    double norm(){
        return sqrt(x*x+y*y+z*z);
    }
    void display(){
        cout<<'('<    }
};
int main(){
    vector_2 *t;
    vector_2 p1,p2,p3;
    double a,b,c;
    double x,y,z;
    cin>>a>>b>>c;
    cin>>x>>y>>z;
    t=&p3;
    p1=vector_2(a,b);
    p2=vector_2(x,y);
    cout<<"v1=";p1.display();cout<    cout<<"v2=";p2.display();cout<    p3=p1+p2;
    cout<<"v1+v2=";t->display();cout<    cout<<"the norm of the vector is "<norm()<    p3=p1-p2;
    cout<<"v1-v2=";t->display();cout<    cout<<"the norm of the vector is "<norm()<
    vector_3 q1,q2,q3;
    t=&q3;
    q1=vector_3(a,b,c);
    q2=vector_3(x,y,z);
    cout<<"v1=";q1.display();cout<    cout<<"v2=";q2.display();cout<    q3=q1+q2;
    cout<<"v1+v2=";t->display();cout<    cout<<"the norm of the vector is "<norm()<    q3=q1-q2;
    cout<<"v1-v2=";t->display();cout<    cout<<"the norm of the vector is "<norm()<
    return 0;
}