My goal is to make class Particle serializable, the question is:

when reading from istream in the derived class, can I use the Particle base class' constructor as member funtion for "initialization"? 

//possible reasons of misunderstanding:
I know I could write setters, but I stumbled upon this option/idea when codeblocks showed the constructor as available member function when applying access operator on an instance of Particle. I never heared of this way of "late" initialization, but I'd like it more than writing tons of setters...

So basically, is this code correct?

```
using namespace std;

struct Serializable {
    virtual void write(ostream&) const = 0;
    virtual void read(istream&) = 0;
    virtual ~Serializable() {}
};

class Particle {
    double X, Y;
public:
    Particle(double x=0, double y=0) :X(x), Y(y) {}
    //...
};

class PParticle: Particle, Serializable {
    //void write...
    void read(istream& is) {
        double x, y;
        cout<<"coord x: "; is>>x;
        cout<<"coord y: "; is>>y;
        this->Particle(x, y); //this is the questionable line
    }
};

```

If not, or if I'm completely wrong about the idea of serialization someone could show an alternative I'd be very thankful!